Sql 使用多列联接获取表1中与表2不匹配的行

Sql 使用多列联接获取表1中与表2不匹配的行,sql,select,join,left-join,Sql,Select,Join,Left Join,嗨,我有这样的问题: SELECT TT2.whs_code, TT2.pdt_code, TT2.fresh_frozen_status, TT2.case_dt_yyyymmdd, TT2.qty_cases, TT2.qty_wt FROM #TempTable2 AS TT2 LEFT OUTER JOIN #TempTable AS TT1 ON TT1.whs_code = TT

嗨,我有这样的问题:

 SELECT TT2.whs_code, 
        TT2.pdt_code, 
        TT2.fresh_frozen_status, 
        TT2.case_dt_yyyymmdd, 
        TT2.qty_cases, 
        TT2.qty_wt 
FROM #TempTable2 AS TT2 
LEFT OUTER JOIN #TempTable AS TT1 
    ON TT1.whs_code = TT2.whs_code 
    AND TT1.pdt_code = TT2.pdt_code 
    AND TT1.fresh_frozen_status = TT2.fresh_frozen_status 
    AND TT1.case_dt_yyyymmdd = TT2.case_dt_yyyymmdd
问题是,我想根据

whs_code, pdt_code, fresh_frozen_status, case_dt_yyyymmdd 
意思是说一组数据
1115G,FR,20160222
处于#试探性1中,因此如果一组数据显示
必须选择
1115G,FR,20160223
,或
必须选择1115G,FZ,20160223,或
2115G,FR,20160223
必须选择

但我不会使用的1115G,FR,20160222不存在

SELECT TT2.whs_code, 
    TT2.pdt_code, 
    TT2.fresh_frozen_status, 
    TT2.case_dt_yyyymmdd, 
    TT2.qty_cases, 
    TT2.qty_wt 
FROM #TempTable2 AS TT2 
WHERE NOT EXISTS (
                    SELECT TOP 1 *
                    FROM #TempTable AS TT1
                    WHERE tt1.whs_code = tt2.whs_code
                       AND tt1.pdt_code = tt2.pdt_code
                       AND TT1.fresh_frozen_status = tt2.fresh_frozen_status
                       AND TT1.case_dt_yyyymmdd  = TT2.case_dt_yyyymmdd 
                   )

你看起来几乎一路都在那里。只需将
其中tt1.fresh\u freezed\u status为NULL
添加到查询中,即可显示T2中不在T1I中的所有行。我需要根据whs\u code、pdt\u code、fresh\u freezed\u status、case\u dt\u yyyymmdd fresh\u freezed\u status的集合进行唯一选择,如您所示,在任何表中,只要将tt2与tt1左连接即可,当tt2记录没有匹配的tt1记录时,tt1.fresh_freezed_status将为空-这就是为什么需要添加“WHERE”子句的原因。如果有可能出现whs_代码、pdt_代码、case_dt_yyyyymmdd也将为空,为什么要使用TOP(1),这是出于性能原因而进行的。基本上,它所做的是找到第一行,然后移到下一行。你可以阅读这篇文章,希望能学到更多。很好,谢谢。