sql - 如何返回没有公共(public) ID 的另一个表中尚不存在的行

标签 sql sql-server t-sql

我是 SQL 新手,请耐心等待。

我有 2 张 table :

表1:

Col1    Col2     ColXX    ColYY     IsDisplay
---------------------------------------------
NULL      AA        NULL     AA         1
BBB       CCC       QQ       QQ         1
DDD       EEE       QQ       QQ         1
1F        2G        WW       WW         0
1H        1H        SS      NULL        1

表2:

ID      Col1     Col2    Sold    Total    TotalPax
-------------------------------------------------------
1       BBB       CCC     10       10       1
1       DDD       EEE     10       10       1
1       1H        1H      5        50       10
1       NULL      AA      5        50       10

正如您所看到的,在这两个表中,唯一的公共(public)列是 Col1 和 Col2。鉴于此。

我需要获取表 1 中 ColXX 和 ColYY 的唯一数据,这些数据在表 2 中不存在。对于本例:

     ColXX    ColYY   
    ----------------
     QQ       QQ    
     WW       WW
     SS       NULL

我不知道该怎么做。有人可以帮助我吗?谢谢

示例数据: http://sqlfiddle.com/#!18/92640/15

最佳答案

使用LEFT JOINIS NULL

SELECT *
FROM Table1 t1
LEFT JOIN Table2 t2 ON t1.col1 = t2.col1 AND t1.col2 = t2.col2
WHERE t2.id IS NULL

仔细查看您的数据和示例,我认为您需要这个:

SELECT DISTINCT ColXX, ColYY
FROM table1 t1
LEFT JOIN table2 t2 ON 
  ISNULL(t1.ColXX, '') = ISNULL(t2.Col1, '') 
  AND ISNULL(t1.ColYY, '') = ISNULL(t2.Col2, '')
WHERE ISNULL(t2.ID, '')=''

关于sql - 如何返回没有公共(public) ID 的另一个表中尚不存在的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69850490/

相关文章:

MySQL:加入两个计数

mysql - 我的 SQL super 慢,我不知道该怎么办

sql-server - SSRS - 报告服务器配置异常(System.Net.Sockets.SocketException(0x80004005): No such host is known )

sql-server - 如何在 Pivot 中使用 TSQL STUFF?

sql-server - 示例更新查询的 SQL Server 查询优化

c# - 如何用C#在数据库中写入NULL

php - 如何根据具有一对多关系的两个表中的位置进行搜索?

sql - 识别 MS Access 中文本字段中的数字

sql - 插入没有值的表的语法?

sql - 在 SQL 中跟踪表何时更新的最佳方法是什么?