我很想知道如何使用CASE和JOIN進行更新。這個例子來自我的Drupal數據庫。 content_type
有nid
作爲主鍵;另一方面,term_node
可以具有與匹配到不同的tid
s相同的nid
的多個行。基於MySQL在哪兒將愉快地分析查詢:正確的MySQL UPDATE語法... JOIN ... CASE?
UPDATE `content_type`
LEFT JOIN `term_node` USING(nid)
SET
`field_m03` = 1
WHERE tid = 696;
上面更新所有行content_type
其中有nid
在term_node
匹配(tid = 696)
,因爲它應該。 但是,當我嘗試使用CASE串入幾個條件時,它將不起作用。沒有錯誤,但0行受到影響:
UPDATE `content_type`
LEFT JOIN `term_node` USING(nid)
SET
`field_m03` = (CASE
WHEN (tid = '696') THEN '1'
WHEN (tid = '697') THEN '2'
WHEN (tid = '698') THEN '3'
WHEN (tid = '699') THEN '4'
WHEN (tid = '700') THEN '5'
ELSE `field_m03`
END);
也試過沒有括號和單引號,沒有改變。
什麼表是field_m03中的? – 2012-02-08 14:10:05
'field_m03'來自表'content_type' – 2012-02-08 14:18:43