删除不同表MysQL查询中的条目

时间:2013-06-07 11:40:34

标签: php mysql sql phpmyadmin

我试图找出,如何使用INNER JOIN删除数据库中的某些条目。

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

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

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

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

我知道,命令"不存在"并没有真正发挥作用。

任何想法?提前谢谢。

2 个答案:

答案 0 :(得分:2)

试试这个

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

答案 1 :(得分:2)

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

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

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