【问题标题】:Delete Entrys in different Tables MysQL Query删除不同表中的条目 MySQL 查询
【发布时间】:2013-06-07 11:40:34
【问题描述】:

我在想,如何使用 INNER JOIN 删除数据库中的一些条目。

我有 2 个不同的表,USER 和 BLOGS

当条目属于不存在的用户时,我正在尝试删除 BLOGS 中的所有条目。因此,在 USER 表中,所有用户都以唯一 ID 列出。这个相同的 ID 也在表 BLOGS 中。

这样的查询可以工作,但我想这甚至不是一个正确的 mysql 查询:

delete from BLOGS where `id` does not exist in USER;

我知道,“不存在”这个命令真的不起作用。

有什么想法吗?提前致谢。

【问题讨论】:

    标签: php mysql sql phpmyadmin


    【解决方案1】:

    试试这个

    DELETE FROM BLOGS WHERE `id`  NOT IN
       (SELECT id FROM `USER`);
    

    【讨论】:

    • 对不起,不好的解决方案,也是错误的。如果有的话,那就是...NOT IN (SELECT id FROM user);
    • SELECT GROUP_CONCAT(id SEPARATOR ',') AS idList FROM USER 这个查询给出了 id 的字符串 (1,2,3....)
    • @tombom 谢谢,我更正了,你知道为什么我不能使用这个查询吗?
    • 你可以使用它,但它比我的慢。
    【解决方案2】:

    最快的方法是做一个左连接,看看哪个条目在另一个表中没有对应的行。

    DELETE FROM 
    blogs
    LEFT JOIN users ON blogs.id = users.id
    WHERE users.id IS NULL;
    

    可以使用与您的语法接近的另一种语法,但它的性能不高,因为对于 blogs 表中的每一行,都会读取整个 users 表(假设没有索引)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-29
      • 2019-04-24
      • 1970-01-01
      • 2016-03-25
      • 2021-07-16
      • 2016-08-30
      相关资源
      最近更新 更多