1

我试图弄清楚,如何使用 INNER JOIN 删除数据库中的一些条目。

我有 2 个不同的表,用户和博客

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

像这样的查询会起作用,但我想这甚至不是一个正确的 mysql 查询:

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

我知道,“不存在”的命令并没有真正起作用。

任何想法?提前致谢。

4

2 回答 2

2

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

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

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

于 2013-06-07T11:46:48.233 回答
2

尝试这个

DELETE FROM BLOGS WHERE `id`  NOT IN
   (SELECT id FROM `USER`);
于 2013-06-07T11:43:39.880 回答