我试图找出,如何使用INNER JOIN删除数据库中的某些条目。
我有2个不同的表,USER和BLOGS
当条目属于不存在的用户时,我试图删除BLOGS中的所有条目。因此,在USER表中,列出了具有唯一ID的所有用户。这个相同的ID也在表BLOGS中。
像这样的查询会起作用,但我想这甚至不是一个正确的mysql查询:
delete from BLOGS where `id` does not exist in USER;
我知道,命令"不存在"并没有真正发挥作用。
任何想法?提前谢谢。
答案 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表中的每一行,都会读取整个用户表(假设没有索引)。