我有这个问题:
UPDATE users u
LEFT JOIN events e ON e.author_id = u.id
SET u.events = 0, e.seen = 1
WHERE u.id = ?
即使此条件 ... ON e.author_id = u.id
不匹配任何行,我的查询也会更新 users
表。现在,当 users
表中没有任何匹配的行时,我还需要更新 events
。我可以通过 RIGHT JOIN
来做到这一点。但我想知道我可以将 RIGHT JOIN
和 LEFT JOIN
混合在一起吗?
最佳答案
你不能在 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 = ?;
如果您认为事务语义很重要并且您的存储引擎支持事务,则可以将它们包装在一个事务中。
关于mysql - 即使没有任何匹配项,JOIN 如何工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39401369/