Можно использовать IF () в запросе SELECT, но не ОБНОВИТЬ - PullRequest
1 голос
/ 19 ноября 2011

Я всегда использовал IF () в запросе SELECT как:

  SELECT
    IF(p.A=value,p.B,p.C) AS photo
FROM prof p
WHERE...

Но когда я использую UPDATE и IF (), как этот SQL, кажется, не работает, это нормально, не можетиспользовать If () в запросе UPDATE?

UPDATE table
SET IF(p.A=value,p.B,p.C) = value2
WHERE...

Ответы [ 4 ]

2 голосов
/ 19 ноября 2011

Я думаю, вы можете переработать логику к этому

p.B = if(p.A=$value, $value2, p.B), // set B=$value2 is p.A=$value
p.C = if(p.A=$value, p.C, $value2)  // set C=$value2 where p.A<>$value
0 голосов
/ 19 ноября 2011
UPDATE 
    table
SET
    value2 = (SELECT IF(p.A=value,p.B,p.C) AS photo FROM prof p WHERE table.id=...)

Только MySQL 4.1 +

0 голосов
/ 19 ноября 2011

Вам нужно использовать CASE .... КОГДА ... ТОГДА вот так

UPDATE table

SET pA = (СЛУЧАЙ КОГДА (pA == значение) THEN value2, ELSE value3 END) WHERE ......

ИЛИ вам нужно идти сюда

0 голосов
/ 19 ноября 2011

Вы не можете присваивать результаты выражению IF, так как оно непосредственно не сохраняется в таблице.Оператор обновления ожидает, что левая часть набора выражений будет именами столбцов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...