【问题标题】:SQL query that can fetch records present in table 1 and not in table 2 [duplicate]SQL查询可以获取表1中存在的记录而不是表2中的记录[重复]
【发布时间】:2017-11-03 02:31:08
【问题描述】:

我想编写一个查询来获取记录表 A 中的记录,而不是表 B 中的记录。根据我当前的应用程序设计,如果记录存在于 A 中,那么它也应该存在于表 B 中。但由于一些接口问题,并非表 A 的所有记录都存在于表 B。现在我想要所有那些在 A 中但不在 B 中的记录。我怎样才能获取这些记录?任何帮助表示赞赏。 TIA。

【问题讨论】:

    标签: mysql sql oracle


    【解决方案1】:

    您可以使用NOT EXISTS,例如:

    SELECT * 
    FROM tableA a
    WHERE NOT EXISTS (
        SELECT * FROM tableB b WHERE b.a_id = a.id
    );
    

    【讨论】:

    • 太棒了!有效。但是,在我的场景中,我需要检查这样的记录:如果记录存在于 A1 或 A2 或 A3 中,但不存在于 B1 和 B2 中。我该怎么做?谢谢!
    • 在这种情况下您可以使用UNION,例如SELECT * FROM (SELECT * FROM A1 UNION SELECT * FROM A2 ) a WHERE NOT EXISTS (*uion query for B tables*).
    猜你喜欢
    • 2017-04-07
    • 2017-02-21
    • 1970-01-01
    • 1970-01-01
    • 2014-01-21
    • 1970-01-01
    • 2018-01-25
    • 2017-03-31
    • 2012-08-12
    相关资源
    最近更新 更多