我有这样的疑问:
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不匹配任何行。现在,当users表中没有任何匹配的行时,我还需要更新events。我可以通过RIGHT JOIN做到这一点。但是我想知道我可以将RIGHT JOIN和LEFT JOIN混合在一起吗?
发布于 2016-09-09 07:03:32
您不能在MySQL中这样做,因为MySQL不支持FULL OUTER JOIN。
但为什么不直接运行两个update语句:
UPDATE users u
SET u.events = 0
WHERE u.id = ?;
UPDATE events e
e.seen = 1
WHERE e.author_id = ?;如果您认为事务语义很重要,并且您的存储引擎支持事务,则可以将它们包装在一个事务中。
https://stackoverflow.com/questions/39401369
复制相似问题