MySQL:按字母顺序在多个列中获取唯一值

时间:2010-05-10 07:26:05

标签: mysql

如果我的表格如下:

id | colA   | colB | colC
===========================
1  | red    | blue | yellow
2  | orange | red  | red
3  | orange | blue | cyan

我运行什么SELECT查询,以便返回的结果是:

蓝色,青色,橙色,红色,黄色

基本上,我想在多列中提取不同值的集合列表,并按字母顺序返回。

我不关心性能优化,因为结果被解析为将用作缓存的XML文件(数据库几乎不更新)。所以即使是肮脏的解决方案也没关系。

感谢您的帮助!

2 个答案:

答案 0 :(得分:8)

(SELECT DISTINCT colA AS color FROM table) UNION
(SELECT DISTINCT colB AS color FROM table) UNION
(SELECT DISTINCT colC AS color FROM table)
ORDER BY color

答案 1 :(得分:3)

按照正常方式行事:

create table new_tbl(col varchar(50));


insert into new_tbl(col)
select cola from tbl
union
select colb from tbl
union
select colc from tbl

然后排序:

select col from new_tbl order by col

或者,如果您不想要登台表,只需执行:

select cola as col from tbl
union
select colb from tbl
union
select colc from tbl
order by col

注意: UNION会自动删除所有重复项,如果要包含重复项,请将 UNION 更改为 UNION ALL