【问题标题】:MySQL multiple-table delete syntaxMySQL 多表删除语法
【发布时间】:2012-03-13 11:33:17
【问题描述】:

我尝试将 2 个删除查询合二为一。例如:

DELETE FROM `comments` WHERE `article_id` = 4;
DELETE FROM `aricles` WHERE `id` = 4;

我尝试使用单个查询:

DELETE `articles`, `comments` 
FROM `articles` INNER JOIN `comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4

如果在表 comments 中存在具有 article_id 4 的记录,但不会删除具有 articles.id = 4 的 articles 记录,如果在 comments 具有 article_id 的记录中,则效果很好= 4 未找到。有什么办法吗?

【问题讨论】:

标签: mysql


【解决方案1】:

这样就可以了-

DELETE `articles`, `comments`
FROM `articles`
LEFT JOIN `comments`
    ON `articles`.`id` = `comments`.`article_id`
WHERE `articles`.`id` = 4;

【讨论】:

  • 这也会删除没有commentsarticles。这更准确地回答了这个问题。
【解决方案2】:

尝试以下方法:

DELETE FROM `articles`, `comments` 
USING `articles` INNER JOIN `comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4

【讨论】:

  • 这将不会删除没有commentsarticles
【解决方案3】:

使用这个

DELETE FROM `articles`, `comments` 
USING `articles`,`comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4

DELETE `articles`, `comments` 
FROM `articles`, `comments` 
WHERE `comments`.`article_id` = `articles`.`id` AND `articles`.`id` = 4

【讨论】:

    猜你喜欢
    • 2013-03-04
    • 1970-01-01
    • 2018-08-20
    • 2014-02-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-16
    • 2014-01-29
    相关资源
    最近更新 更多