我在网上搜了很多东西,却不知道该怎么做。
我想删除我用以下查询选择的所有行。

`SELECT * FROM `session` s
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId)
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId)
WHERE s.`JSEnabled` = 0

我试着用
DELETE FROM `session` s
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId)
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId)
WHERE s.`JSEnabled` = 0

我试着做类似于这个帖子的回答
Deleting rows with MySQL LEFT JOIN
但它不起作用。
如何在不必在应用程序中执行循环的情况下进行此查询?

最佳答案

如果只需要从一个表中删除,则可以按

DELETE s FROM `session` s
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId)
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId)
WHERE s.`JSEnabled` = 0

从多个具有join的表中删除
DELETE s,p,ps FROM `session` s
LEFT JOIN `pages` p ON (s.Id = p.VisitorSessionId)
LEFT JOIN `product_views`ps ON (s.Id = ps.VisitorSessionId)
WHERE s.`JSEnabled` = 0

关于mysql - 使用左联接从多个表中删除行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29975367/

10-15 02:48