2009-10-10 41 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

相关问题