SQL从多个列中选择单个不同的值(不是组合值)

时间:2013-07-23 10:43:35

标签: sql

例如,我有下表:

UserId Department1 Department2
------------------------------
1      Sales       Marketing
2      Research
3      Sales

我希望得到以下结果

DistinctDepartments
-------------------
Sales
Marketing
Research

我发现很多解决方案向我展示了多列的不同组合值,但我需要整体不同的值,就好像所有值都在同一列中一样。

三江源

克里斯

2 个答案:

答案 0 :(得分:4)

使用union绝对是解决此问题的合理方法。但是,在大多数数据库中,以下内容可能更快:

select distinct (case when n = 1 then Department1 else Department2 end)
from tab cross join
     (select 1 as n union all select 2) n

原因是该表只扫描一次,而不是每列扫描一次。当tab不是真正的表格,而是更昂贵的观点时,这一点尤为重要。 (并且一些数据库支持unpivot,其行为类似于此。)

答案 1 :(得分:3)

尝试将union用于两个列

select Department1 
from tab
union 
select Department2 
from tab

注意:union命令可以消除重复