【问题标题】:Sqlserver minus with unmatched columnsSqlserver 减去不匹配的列
【发布时间】:2020-03-17 07:37:51
【问题描述】:

我有两个不同列的表,想要intersect 记录。

表 1:

Id       name       age
1        AAA        20
2        AAA        30
3        BBB        25
4        BBB        30

表 2:

         name      age
         AAA       20
         BBB       30

期望输出:(Table2 - Table1)

Id     name     age
2      AAA      30
3      BBB      25

【问题讨论】:

  • “想要”不是问题。拥有近 10,000 名声望的人应该知道在发布问题时如何提出问题以及如何展示他们的努力。

标签: sql-server tsql


【解决方案1】:

您可以将NOT EXISTS 与相关子查询一起使用,以检查不存在具有相同值的元组(name, age)

SELECT *
       FROM table1 t1
       WHERE NOT EXISTS (SELECT *
                                FROM table2 t2
                                WHERE t2.name = t1.name
                                      AND t2.age = t1.age);

【讨论】:

    【解决方案2】:

    使用Right Join

    SELECT DISTINCT Table1.Id, Table1.Name, Table1.Age
    FROM Table2  RIGHT JOIN Table1 ON Table1.Name = Table2.Name AND Table1.Age = Table2.Age
    WHERE Table2.Name IS NULL
    

    FIDDLE DEMO

    【讨论】:

    • @Srinivasan 你可以使用Right加入
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多