例如,我有下表:
UserId Department1 Department2
------------------------------
1 Sales Marketing
2 Research
3 Sales
我希望得到以下结果
DistinctDepartments
-------------------
Sales
Marketing
Research
我发现很多解决方案向我展示了多列的不同组合值,但我需要整体不同的值,就好像所有值都在同一列中一样。
三江源
克里斯
答案 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
命令可以消除重复