我有两个表,我需要第一个没有出现在第二个表中的所有行。
这些表可以在从其他表转储时被销毁。
第一张表有约5700万行。第二张表有大约1000万行。
这两个问题都是因为显而易见的原因而永远存在,请帮助我更快地完成这项工作。
SELECT * FROM db.first WHERE id NOT IN (SELECT id FROM db.second)
DELETE FROM db.first WHERE id IN (SELECT id FROM db.second)
编辑:我不需要第二个表中的任何记录,我只需要出现在第一个表中但没有出现在第二个表中的行。
答案 0 :(得分:4)
使用连接可能要快得多:
select one.*
from db.first one
left join db.second two on one.id = two.id
where two.id is null
和删除:
delete first
from first
join second on first.id = second.id