我想比較兩個表,SQL Server來驗證一些數據。我想從兩個表中返回數據都在一個或另一箇中的所有行。本質上,我想顯示所有的差異。我需要檢查三個數據,FirstName,LastName和Product。SQL查詢返回兩個表之間的差異
我對SQL相當陌生,看起來好像很多我找到的解決方案都是複雜化的東西。我不必擔心NULL。
我開始通過嘗試這樣的:
SELECT DISTINCT [First Name], [Last Name], [Product Name] FROM [Temp Test Data]
WHERE ([First Name] NOT IN (SELECT [First Name]
FROM [Real Data]))
我無法採取這一進一步雖然。
謝謝!
編輯:
基於由@treaschf答案我一直在嘗試使用下面的查詢的變化:
SELECT td.[First Name], td.[Last Name], td.[Product Name]
FROM [Temp Test Data] td FULL OUTER JOIN [Data] AS d
ON td.[First Name] = d.[First Name] AND td.[Last Name] = d.[Last Name]
WHERE (d.[First Name] = NULL) AND (d.[Last Name] = NULL)
但我一直得到0的結果回來,當我知道有在td中至少有一行不在d中。
編輯:
好的,我想我想通了。至少在幾分鐘的測試中,它似乎工作得很好。
SELECT [First Name], [Last Name]
FROM [Temp Test Data] AS td
WHERE (NOT EXISTS
(SELECT [First Name], [Last Name]
FROM [Data] AS d
WHERE ([First Name] = td.[First Name]) OR ([Last Name] = td.[Last Name])))
這基本上是要告訴我什麼是在是不在我的實際數據我的測試數據。對於我需要做的事情,這是完全正確的。
下面的例子比這個例子快100倍。 – 2014-01-21 04:42:36
有人可以確認這是否有效?在我的結尾不起作用,如果沒有在任何地方使用「d」,也沒有看到「AS d」這一點,那麼在那裏可能有錯誤嗎? – 2017-03-17 02:48:05