mysql 列转行(多行合并一行)

1,304 阅读1分钟

GROUP_CONCAT

MySQL GROUP_CONCAT() 函数将分组中的某列合并成一行

GROUP_CONCAT() 函数的语法:

GROUP_CONCAT([DISTINCT] expression
    [ORDER BY expression]
    [SEPARATOR sep]);

DISTINCT 子句用于在连接分组之前消除组中的重复值。

ORDER BY 子句允许您在连接之前按升序或降序排序值。 默认情况下,它按升序排序值。 如果要按降序对值进行排序,则需要明确指定 DESC 选项。

SEPARATOR 指定在组中的值之间插入的文字值。如果不指定分隔符,则 GROUP_CONCAT 函数使用英文逗号作为默认分隔符。

GROUP_CONCAT 函数忽略 NULL 值,如果找不到匹配的行,或者所有参数都为 NULL 值,则返回 NULL

GROUP_CONCAT 函数返回二进制或非二进制字符串,这取决于参数。 默认情况下,返回字符串的最大长度为 1024。如果您需要更多的长度,可以通过在 SESSION 或 GLOBAL 级别设置 group_concat_max_len 系统变量来扩展最大长度。

示例

初始语句及结果

image.png

列转行sql

SELECT
    GROUP_CONCAT( `name` SEPARATOR ';' ) `name` 
FROM
    e_return_point 
WHERE
    id IN (1527092956720934914,1527096425364205570)

效果

image.png

参考

mysql GROUP_CONCAT