【问题标题】:SQL: How do I check for records in one table that aren't in another?SQL:如何检查一个表中不存在于另一个表中的记录?
【发布时间】:2012-08-30 12:53:59
【问题描述】:

我想查找在一个表中但不在另一个表中的记录。除了记录的形成方式不同。所以我想确定我想用来比较的列。我以为我已经用下面的代码解决了,但它似乎不起作用(返回零记录)......

SELECT A.Name, A.Position, A.[Year]
  FROM TABLE A
 WHERE NOT EXISTS (

 SELECT B.Name, B.Position, B.[Year]
   FROM TABLE B
)

或者我应该通过某种加入来执行此操作?谢谢...

【问题讨论】:

    标签: sql-server exists


    【解决方案1】:

    您可以在表 b 上使用左外连接和 where 子句查找空值。

    我假设第一个查询中的所有内容都来自表 A,第二个查询中的所有内容都来自表 B

    Select A.Name, A.Position, A.[Year]
    from A
    Left Join B on A.Name = B.Name and A.Position = B.Position and A.[Year] = B.[Year]
    where B.Name is Null
    

    【讨论】:

      【解决方案2】:

      假设您想使用所有三列进行比较,您可以使用反连接。

      SELECT A.Name, A.Position, A.[Year]
        FROM TABLE_A A
           LEFT JOIN TABLE_B B
           ON a.name = b.name
               and a.position = b.position 
               and a.[Year] = b.[Year]
      WHERE
         b.name is null
      

      【讨论】:

        【解决方案3】:

        您缺少用于比较两个表的 WHERE 子句:

        SELECT A.Name, A.Position, A.[Year]
          FROM TABLE A
         WHERE NOT EXISTS (
        
         SELECT B.Name, B.Position, B.[Year]
           FROM TABLE B
           WHERE B.Name = A.Name AND B.Position = A.Position AND B.[Year] = A.[Year]
        )
        

        【讨论】:

        • 抱歉 B 和 C 是错别字我在问题中更正了谢谢。
        猜你喜欢
        • 1970-01-01
        • 2020-05-11
        • 1970-01-01
        • 2021-06-19
        • 1970-01-01
        • 1970-01-01
        • 2010-09-26
        • 2021-08-02
        • 1970-01-01
        相关资源
        最近更新 更多