如果我的表看起来像这样:
id | colA | colB | colC
===========================
1 | red | blue | yellow
2 | orange | red | red
3 | orange | blue | cyan
Run Code Online (Sandbox Code Playgroud)
我运行什么SELECT查询,以便返回的结果是:
蓝色,青色,橙色,红色,黄色
基本上,我想在多个列中提取不同值的集合列表,并按字母顺序返回它们.
我不关心性能优化,因为结果被解析为将用作缓存的XML文件(数据库几乎不更新).所以即使是肮脏的解决方案也没关系.
谢谢你的帮助!
(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
Run Code Online (Sandbox Code Playgroud)
只需按照正常方式进行即可:
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
Run Code Online (Sandbox Code Playgroud)
然后排序:
select col from new_tbl order by col
Run Code Online (Sandbox Code Playgroud)
或者,如果您不需要临时表,只需执行以下操作:
select cola as col from tbl
union
select colb from tbl
union
select colc from tbl
order by col
Run Code Online (Sandbox Code Playgroud)
注意: UNION会自动去除所有重复项,如果要包含重复项,请将UNION改为UNION ALL