MySQL如何删除另一个表中的表中的记录

时间:2009-06-19 18:43:06

标签: sql inner-join subtraction

我的表A有近15000个条目。我有第二个表B,其中7900个条目与表A的公共字段。

我需要从表A中提取第三个临时tableC中的所有条目,除了那些也出现在表B中的条目。听起来很简单,我还没有找到方法。我得到的最接近的是:

INSERT INTO tableC
SELECT * 
FROM tableA
    INNER JOIN tableB
        ON tableA.field IS NOT tableB.field

这个SQL只选择tableA中的所有内容,甚至是tableB中的条目。

我出错的任何想法?

1 个答案:

答案 0 :(得分:6)

如果你试试这个怎么办?

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE tableA.field NOT IN (SELECT tableB.field FROM tableB)

或者您可以尝试备用EXISTS语法

INSERT INTO tableC 
SELECT * 
FROM tableA 
WHERE NOT EXISTS (SELECT * FROM tableB WHERE tableB.field = tableA.field)