mysql【group_concat】数据库将查询的多条结果的某些字段合
并为⼀个字段处理
在使⽤mysql数据库做⼀些业务时,⽐如将⼀条记录对应的多条详情数据记录归并为该条记录的某⼀个字段时,可以使⽤mysql的concat_ws 和group_concat⽅法来进⾏处理:
使⽤concat_ws⽅法将详情数据的⼀条记录的多个字段先拼接合并为⼀个字段,然后使⽤group_concat将多条详情数据合并处理的字段拼接合并为⼀个字段。
mysql删除重复的数据保留一条语法:
GROUP_CONCAT([DISTINCT] expr [,expr ...]
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
[SEPARATOR str_val])
在 MySQL 中,通过使⽤ DISTINCT 可以排除重复值,通过使⽤ ORDER BY ⼦句对结果中的值进⾏排序。
SEPARATOR 是⼀个字符串值,它被⽤于插⼊到结果值中。缺省为⼀个逗号 (","),可以通过指定 SEPARATOR "" 完全地移除这个分隔符。可以通过变量 group_concat_max_len 设置⼀个最⼤的长度。在运⾏时执⾏的句法如下: SET [SESSION | GLOBAL]
group_concat_max_len = unsigned_integer;
如果最⼤长度被设置,结果值被剪切到这个最⼤长度。如果分组的字符过长,可以对系统参数进⾏设置:SET
@@up_concat_max_len=40000
⽰例如下:
SELECT
GROUP_CONCAT(tmp.fileInfo) AS fileInfos
FROM
(
SELECT
CONCAT_WS(
'-',
file_name,
file_url
) AS fileInfo
FROM
clientlogdetail
WHERE
serial_no =11
) tmp;
以上sql是使⽤CONCAT_WS⽅法将clientlogdetail表中的file_name和file_url字段通过分割符-拼接合并为⼀个字段,之后使⽤
GROUP_CONCAT⽅法将前⾯拼接的结果继续拼接合并为⼀个字段。效果如下:
详情记录字段值:
详情记录字段合并结果:
所有详情记录结果合并结果:
group_concat还可以设置拼接前缀和后缀符,如group_concat("", 字段名,"'")是以单引号将结果组合进⾏拼接。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。