如何从表中选择数据不存在于另一个表sql中

时间:2018-06-05 01:39:06

标签: sql

如何从表中选择数据不存在于另一个表sql中。我尝试过NOT IN和NOT EXIST方法。但它会导致大量数据的性能问题。任何人都可以为此提出解决方案。? 提前谢谢。

我尝试了以下内容。

SELECT name 
FROM table1
WHERE NOT EXISTS 
    (SELECT * 
     FROM table2 
     WHERE table1.name = table2.name)

NOT IN 案例。 但是对于大量数据而言性能问题。

2 个答案:

答案 0 :(得分:3)

我认为您的表格table1table2name列上有索引,因此您可以尝试这样做:

SELECT name
FROM table1 t1 LEFT JOIN table2 t2 ON t1.name = t2.name
WHERE t2.id IS NULL

可能是id列,如果没有,请使用t2.name代替t2.id

答案 1 :(得分:0)

对于此查询:

SELECT name 
FROM table1
WHERE NOT EXISTS 
    (SELECT * 
     FROM table2 
     WHERE table1.name = table2.name)

您需要table2(name)上的索引。