簡體   English   中英

不匹配3個表的SQL查詢

[英]Not Matching SQL query over 3 tables

我有三個要運行不匹配查詢的表。 表1是我的主表,表2和3是每天添加記錄的表。

現在,結果需要顯示表1(異常報告)中沒有的內容

現在,我編寫了一個腳本,該腳本僅查詢2個表,但無法正常工作。 因為表1包含8277436記錄,並且當我執行腳本時結果為8620530 ?????? 我在某個地方出錯。

下面的腳本

Select distinct ID_NUMBER, CLIENT_CODE 
from [KAMLS].[dbo].[Retail]
Left Join [22AE5D15].[dbo].[Documents1]
on [KAMLS].[dbo].[Retail].ID_NUMBER  NOT LIKE '%' + [22AE5D15].[dbo].[Documents1].B61DDE99 + '%' 

表1 [KAMLS]。零售ID_Number客戶代碼

Table 2 [22AE5D15].Documents1
B61DDE99 = ID Number

Table 3 [22AE5D16].Documents 2
ID_Number

我要查找的結果是表1 [KAMLS]中的所有文檔。表2和表3中都沒有出現零售,在我忘記之前,為什么我的腳本沒有給出正確的結果...我需要學習我的錯...

謝謝

根據我對先前答案的評論,這應該可以為您帶來預期的結果:

DECLARE @Table1 TABLE (ID_NUMBER INT)
DECLARE @Table2 TABLE (ID_NUMBER INT)
DECLARE @Table3 TABLE (ID_NUMBER INT)

INSERT INTO @Table1 VALUES (1),(2),(3),(4),(5),(6)
INSERT INTO @Table2 VALUES (1),(2),(3)
INSERT INTO @Table3 VALUES (1),(4),(5)
;

WITH NotInTable2OrTable3 AS
(
    SELECT ID_NUMBER FROM @Table1
    EXCEPT
    (
        SELECT ID_NUMBER FROM @Table2
        UNION ALL
        SELECT ID_NUMBER FROM @Table3
    )
)

SELECT * FROM NotInTable2OrTable3

腳本對您不起作用的原因是,您正在將Table1中的每一行與Table2中的每一行進行比較,並在每次它們彼此不相似時進行聯接。 這對於您的情況而言不是很有價值的信息,因為如果表1中有“ abc”,則它與“ 123”,“ 456”或“ 789”不同,因此您會將3條記錄連接到“ abc”,並且它不會告訴您您是否在表2中輸入了“ abc”。

您可以通過多種方式完成自己想做的事情。 發布的cte可以使用,但是我只想對兩個表使用左連接,並在連接為空的情況下獲取結果。

select ID_NUMBER from Table1 t1
left join Table2 t2
    on t1.ID_NUMBER = t2.ID_NUMBER
left join Table3 t3
    on t1.ID_NUMBER = t3.ID_NUMBER
where t2.ID_NUMBER is null
    and t3.ID_NUMBER is null

我想你想要這樣的東西。 它返回表2中與表1中的ID不匹配的所有ID,以及表3中與表1中的ID不匹配的所有ID。

select table2.id from table2
    left join table1 on table1.id=table2.id
    WHERE table1.id IS NULL
UNION ALL
select table3.id from table3
    left join table1 on table1.id=table3.id
    WHERE table1.id IS NULL

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM