如果......在MySQL中使用子查询进行ELSE

时间:2014-06-24 11:55:17

标签: mysql sql if-statement subquery

表格中的

'聊天':

enter image description here

我想删除 发件人和收件人删除的邮件。但是,如果用户是第一个删除邮件的用户,则应该将其记录在" deleted_by"用他的用户ID(直到第二个用户也删除该消息)。

对于消息#3和用户#1,我的查询看起来像这样:

IF
    (SELECT deleted_by from chat WHERE id=3) <> '1' AND (SELECT deleted_by from chat WHERE id=3) <> '0' THEN
    DELETE FROM chat WHERE id=3
ELSE 
    UPDATE chat
    SET deleted_by=1
    WHERE id=3
END IF

这应该删除消息#3,但我得到一个错误。你可以帮我完成SQLfiddle的工作吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

不需要子查询。相反,如果其他用户已将其标记为已删除,则可以删除该行,如果该行仍然存在,则将其标记为已删除:

DELETE FROM chat WHERE id = 3 AND deleted_by <> 0;
UPDATE chat SET deleted_by = 4 WHERE id = 3;