我正在比較兩個表(dbo.new
和dbo.old
),如果前三列匹配且第四列不匹配,則必須選擇它。現在這顯示了很多值,我只想顯示column2的唯一值。這是代碼我現在有:如何僅在此現有SQL查詢中顯示唯一值
SELECT dbo.new.[column1], dbo.new.[column2], dbo.new.[column3], dbo.new.[column4]
FROM dbo.new
JOIN dbo.old ON dbo.new.[column1]=dbo.old.[column1]
AND dbo.new.[column2]=dbo.old.[column2]
AND dbo.new.[column3]=dbo.old.[column3]
WHERE [dbo].[new].[column4] <> [dbo].[old].[column4]
前兩個表我開始:
-----------------
| 1 | 1 | 1 | 1 |
-----------------
| 2 | 1 | 2 | 2 |
-----------------
| 3 | 3 | 3 | 3 |
-----------------
| 4 | 1 | 4 | 4 |
-----------------
-----------------
| 1 | 1 | 1 | 9 |
-----------------
| 2 | 1 | 2 | 9 |
-----------------
| 3 | 3 | 3 | 9 |
-----------------
| 4 | 1 | 4 | 9 |
-----------------
這是上面的查詢結果:
-----------------
| 1 | 1 | 1 | 1 |
-----------------
| 2 | 1 | 2 | 2 |
-----------------
| 3 | 3 | 3 | 3 |
-----------------
| 4 | 1 | 4 | 4 |
-----------------
^delete those duplicates
這就是我想要的結果如下:
-----------------
| 1 | 1 | 1 | 1 |
-----------------
| 3 | 3 | 3 | 3 |
-----------------
我試過很多東西,如UNIQUE
和DISTINCT
,但我找不到解決方案。它甚至需要顯示第一個值,只要它顯示唯一的一行。所以這也是正確的:
-----------------
| 4 | 1 | 4 | 4 |
-----------------
| 3 | 3 | 3 | 3 |
-----------------
編輯您的問題,並提供樣本數據以及所需的結果。 –
@wouterdejong您希望所有列的記錄具有相同的值嗎?並且添加一些示例數據,以便理解這個問題。 –
你說'如果前三列匹配,第四列不匹配,就必須選擇它。'對我而言,這意味着將選擇1 1 1 5。 1 1 1 1或1 1 5 2是不會被選中的例子 - 在第一個條件中第四個不匹配被驗證,第二個列1-3不匹配 - 你能否澄清? – Cato