2012-01-21 41 views
1

有沒有更簡單的方法來更新?更簡單的方法來做mysql更新?

UPDATE mailbox SET toNew = 1, toDelete = 0 WHERE msgID = 1 AND msgFrom = 1 

UPDATE mailbox SET fromNew = 1, fromDelete = 0 WHERE msgID = 1 AND msgTo = 1 

我試圖用一個IF但它沒有工作...

UPDATE mailbox SET IF(msgTo = 1, toNew, fromNew) = 1, toDelete = 0 WHERE msgID = 1 

任何想法?

回答

2

這可能做的伎倆,但我更喜歡原來的查詢,因爲他們更可讀IMO

UPDATE mailbox SET toNew = IF(msgTo=1,1,toNew), toDelete = IF(msgTo=1,0,toDelete), fromNew = IF(msgFrom=1,1,fromNew), fromDelete = IF(msgFrom=1,0,fromDelete) WHERE msgID=1 
+0

我同意他們更具可讀性,但一個查詢不會比兩個更快?我沒有預先優化,但是它讓我發現'SET'後面的'IF'沒有工作! –

+0

@ novactown.com SQL是非常trict的方式 –

+0

這工作的一種享受!謝謝。當我真正看到它時,這樣看起來更合乎邏輯。 –

0

我不能100%確定你想要什麼邏輯(基於什麼旗,什麼排列您有),但你可以嘗試這樣的事情

UPDATE mailbox 
SET 
    toNew = msgFrom, 
    fromNew = msgTo, 
    toDelete = CASE WHEN msgFrom = 1 THEN 0 ELSE toDelete END, 
    fromDelete = CASE WHEN msgTo = 1 THEN 0 ELSE fromDelete END 
WHERE 
    msgID = 1; 
+0

謝謝,只是看到這是否也能工作。 –

相關問題