[英]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.