获取表1中的行与表2不匹配在多列上使用JOIN

时间:2016-02-26 15:46:15

标签: 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 = 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

Thing是我想要选择#TempTable2中的#TiTable1中不存在的列

whs_code, pdt_code, fresh_frozen_status, case_dt_yyyymmdd 

表示可以说一组数据 1,115G,FR,20160222在#TempTable1中所以如果一组数据说出来 必须选择1,115G,FR,20160223或 必须选择1,115G,FZ,20160223或 必须选择2,115G,FR,20160223 但不是1,115G,FR,20160222

1 个答案:

答案 0 :(得分:0)

我会使用NOT EXISTS。

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 
                   )