'聊天':
我想删除 发件人和收件人删除的邮件。但是,如果用户是第一个删除邮件的用户,则应该将其记录在" 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的工作吗?
谢谢!
答案 0 :(得分:1)
不需要子查询。相反,如果其他用户已将其标记为已删除,则可以删除该行,如果该行仍然存在,则将其标记为已删除:
DELETE FROM chat WHERE id = 3 AND deleted_by <> 0;
UPDATE chat SET deleted_by = 4 WHERE id = 3;