【问题标题】:Delete rows from multiple tables with a left join使用左连接从多个表中删除行
【发布时间】:2015-04-30 18:42:30
【问题描述】:

我在网上搜索了很多,但我不知道如何完成我的简单任务。

我想删除我使用以下查询选择的所有行。

`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 但它不起作用。

如何在我的应用程序中执行此查询而无需执行循环?

【问题讨论】:

    标签: mysql sql database


    【解决方案1】:

    如果您只需要从一个表中删除,则可以这样做

    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
    

    对于从多个表中删除连接它会是

    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
    

    【讨论】:

    • 不,我需要删除与所选会话表行匹配的所有表行
    • 哦,哇,.. 我有它,但我使用的是表名,而不是。好吧,感谢您的快速回答!我必须等待将此答案标记为已接受大声笑..
    • DELETE 子句中的 OUTER JOIN 很少见。也许是有原因的!
    • @Strawberry 你为什么这么说?是什么原因?
    猜你喜欢
    • 2015-03-15
    • 1970-01-01
    • 2019-05-30
    • 1970-01-01
    • 2011-05-13
    • 1970-01-01
    • 2021-09-02
    • 1970-01-01
    • 2015-08-05
    相关资源
    最近更新 更多