繁体   English   中英

sql 组所有值

[英]sql group all value

在 sql、mariadb 中,我想对许多列进行分组,例如:

我在 sql 中有这个:

当我运行此命令时: select * from table或使用group by

结果:

a b
a c
a d
a e

我想像这样regroup所有 a 和 b c de:

a b,c,d,e

感谢您提供任何信息

如果你只想要一个逗号分隔的结果,你可以尝试使用 concat 和 group_concat

假设 col1 包含 a 值, col2 包含 b,c,d,e 值

   select concat(col1, ', ',group_concat(col2))
   from  my_table  
   group by col1 

在 MariaDB 中,您可以使用uniongroup_concat()

select group_concat(mycol order by mycol) res
from (
    select col1 mycol from mytable
    union select col2 from mytable
) x

union生成一个新的结果集,同时删除跨列的重复值。 然后group_concat()将结果展平为逗号分隔的列表。 group_concat()order by选项可让您确定返回值的顺序。 这为您提供了col1col2列中所有不同值的逗号分隔列表。

如果您希望col2的所有值按col1分组,那么它是不同的:

select col1, group_concat(col2 order by col2)
from mytable
group by col1

暂无
暂无

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

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