2009-10-10 39 views
0

假設我有兩列整數A和B.現在我想從這些列中獲取不同的值,這意味着如果A和B都有1,我只需要1次。SQL Server - 來自多個(2)列的不同值

注:我不想獲取不同的行。我只想從該表中獲得唯一的整數值,可以是A或B

我可以在某個臨時表的一列中插入A和B的值,並在該列上執行一個不同的選擇。

任何更復雜(performancewise)?

回答

6

類似的東西應該工作,我想:

選擇所有不同的A的,那麼所有的不同B」 UNION ALL這兩套 選擇從工會的結果集DISTINCT SELECT DISTINCT * FROM ( SELECT DISTINCT甲FROM YourTable UNION ALL SELECT DISTINCT乙FROM YourTable )

隨着盧卡斯的幫助下,你可以簡單的寫:

 SELECT A FROM YourTable 
    UNION 
    SELECT B FROM YourTable 

,因爲他理所當然地指出,正規的UNION收益沒有重複。你甚至不需要在你的單個SELECT上有一個DISTINCT子句 - 很巧妙!謝謝,Lukáš!

馬克

+2

如果你改變'UNION ALL'到'UNION',就可以避免外部查詢爲'UNION'本身將返回唯一不同的值。 – 2009-10-10 07:39:07

+0

@Lukas:確實很聰明 - 完全正確! :-) – 2009-10-10 07:40:31

+3

你甚至不需要在內部查詢上使用'DISTINCT'。 – 2009-10-10 07:41:26

相關問題