[英]SQL select single distinct values from multiple columns (not combined values)
例如,我有下表:
UserId Department1 Department2
------------------------------
1 Sales Marketing
2 Research
3 Sales
我想得到以下结果
DistinctDepartments
-------------------
Sales
Marketing
Research
我发现了很多解决方案,它们向我显示了多个列的不同组合值,但是我需要总体上不同的值,就像所有值都在同一列中一样。
谢谢
克里斯
使用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
,其行为与此类似。)
尝试对两个列使用union
select Department1
from tab
union
select Department2
from tab
注意: union
命令消除重复项
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.