繁体   English   中英

SQL将多个列中的不同值连接成一行

[英]SQL Concatenating distinct values from multiple columns into one row

我有这3列标签

 PRODUCT....CATEGORY......CLASS
 X............1.............II
 Y............1.............II
 Z............1.............II
 Y............2.............II

我想返回一行,每列的所有DISTINCT值都为:

 RESULT

 X Y Z 1 2 II

获得此结果的最佳方法是什么?

假设各列之间没有重复项,则可以使用group_concat()

select concat_ws(' ',
                 group_concat(distinct product separator ' '),
                 group_concat(distinct category separator ' '),
                 group_concat(distinct class separator ' ')
                )
from tab t;

您可以先收集子选择中的所有值,然后使用group_concat显示这些值

select group_concat(v separator ' ')
from (select product as v from testa
      union
      select category as v from testa
      union
      select class as v from testa) t

SQLFiddle

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM