我有这个问题:
UPDATE users u
LEFT JOIN events e ON e.author_id = u.id
SET u.events = 0, e.seen = 1
WHERE u.id = ?
即使此条件users
与任何行不匹配,我的查询也会更新... ON e.author_id = u.id
表。现在,当events
表中没有任何匹配的行时,我还需要更新users
。我可以通过RIGHT JOIN
来做到这一点。但我想知道我可以将RIGHT JOIN
和LEFT JOIN
混合在一起吗?
答案 0 :(得分:3)
你不能在MySQL中这样做,因为MySQL不支持FULL OUTER JOIN
。
但为什么不运行两个更新语句:
UPDATE users u
SET u.events = 0
WHERE u.id = ?;
UPDATE events e
e.seen = 1
WHERE e.author_id = ?;
如果您认为事务语义很重要并且您的存储引擎支持事务,则可以将它们包装在事务中。