我一直在SELECT查询中使用IF((作为:
SELECT
IF(p.A=value,p.B,p.C) AS photo
FROM prof p
WHERE...
但是,当我像这样使用UPDATE和IF((时,SQL似乎不起作用,在UPDATE查询中不能使用IF((是正常的吗?
UPDATE table
SET IF(p.A=value,p.B,p.C) = value2
WHERE...
我认为你可以重新处理这个的逻辑
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
不能分配IF表达式的结果,因为它不是直接存储在表中的。update语句要求集合表达式的左侧为列名。
您需要使用CASE。。。。何时。。。然后像这个
UPDATE table
集合第A页=(案例何时(p.A==值(那么值2其他值3完)其中……
或者您需要转到此处
UPDATE
table
SET
value2 = (SELECT IF(p.A=value,p.B,p.C) AS photo FROM prof p WHERE table.id=...)
仅MySQL 4.1+