【问题标题】:MySQL how to remove records in a table that are in another tableMySQL如何删除另一个表中的表中的记录
【发布时间】:2009-06-19 18:43:06
【问题描述】:

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

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

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

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

任何想法我要去哪里错了吗?

【问题讨论】:

    标签: sql inner-join subtraction


    【解决方案1】:

    如果你试试这个呢?

    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)
    

    【讨论】:

    • 太棒了!这就像一个魅力。没想过简单地使用子选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-21
    • 1970-01-01
    • 2010-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-02
    相关资源
    最近更新 更多