Более простой способ сделать MySQL ОБНОВЛЕНИЕ? - PullRequest
1 голос
/ 21 января 2012

Есть ли более простой способ получить это обновление?

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 ]

2 голосов
/ 21 января 2012

Это может сработать, хотя я предпочитаю ваши оригинальные запросы, так как они более читабельны 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 голосов
/ 21 января 2012

Я не на 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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...