2011-11-19 66 views
1

我在AA SELECT查詢一如既往使用IF():可以在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... 

回答

2

我想你可以重新工作的邏輯來此

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

完美。謝謝隊友 – Anon

0

由於不直接存儲在表中,所以不能指定IF表達式的結果。更新語句期望集合表達式的左側是列名稱。

+0

如何在事實誹謗呢?這裏沒有任何解決方案。 :( – Anon

-1
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

可以解釋爲什麼downvote? – Peter

0

您需要使用CASE ....當... THEN這樣

UPDATE table 

SET PA = ( CASE WHEN ( pA == value) THEN value2 ELSE value3 END ) WHERE ......

OR you need to go here

+0

不工作也許是因爲我使用PHP/SQL – Anon

相關問題