SQL—Group_Concat函数用法详解
创作时间:
作者:
@小白创作中心
SQL—Group_Concat函数用法详解
引用
CSDN
1.
https://blog.csdn.net/weixin_48935611/article/details/144889460
SQL—Group_Concat函数用法详解
GROUP_CONCAT
函数是SQL中一个非常实用的聚合函数,主要用于将多行数据合并为一个字符串。其基本语法如下:
GROUP_CONCAT([DISTINCT] expression [ORDER BY expression] [SEPARATOR separator])
- DISTINCT(可选):去除重复的值。指定
DISTINCT
,GROUP_CONCAT
会在连接值之前去除重复的行。 - expression:需要合并的字段或表达式。可以是表中的列,也可以是计算结果。
- ORDER BY expression(可选):定义合并顺序。可以对结果进行排序(例如按字母顺序排序)。
- SEPARATOR separator(可选):指定连接值之间的分隔符,默认为逗号(
,
)。可以自定义为其他字符或字符串(如空格、分号、破折号等)。
Demo01:基本用法
将同一个state
下的city
合并为一个以逗号分隔的字符串。
state | city |
---|---|
California | Los Angeles |
California | San Francisco |
California | San Diego |
Texas | Houston |
Texas | Austin |
Texas | Dallas |
Demo02:去重使用(DISTINCT)
避免重复的城市名称,可以使用DISTINCT
。
state | city |
---|---|
California | Los Angeles |
California | Los Angeles |
Texas | Houston |
Texas | Austin |
Texas | Dallas |
SELECT
state,
GROUP_CONCAT(DISTINCT city ORDER BY city ASC SEPARATOR ', ') AS cities
FROM
cities
GROUP BY
state;
state | cities |
---|---|
California | Los Angeles |
Texas | Austin, Dallas, Houston |
Demo03:自定义分隔符
使用SEPARATOR
参数自定义分隔符。将城市之间用分号(;
)连接:
state | cities |
---|---|
California | Los Angeles; San Diego; San Francisco |
Texas | Austin; Dallas; Houston |
Demo04:按其他字段排序
使用ORDER BY
对结果进行排序。按城市名称的字母降序排列:
state | cities |
---|---|
California | San Francisco, San Diego, Los Angeles |
Texas | Houston, Dallas, Austin |
Demo05:合并计算结果
GROUP_CONCAT
不仅可以用来合并字段,还可以合并计算结果。例如,连接多个字段或计算的结果:
state | city | population |
---|---|---|
California | Los Angeles | 1000000 |
California | San Francisco | 900000 |
Texas | Houston | 2000000 |
Texas | Austin | 900000 |
SELECT
state,
GROUP_CONCAT(CONCAT(city, ' (', population, ')') ORDER BY city ASC SEPARATOR ', ') AS cities
FROM
cities
GROUP BY
state;
state | cities |
---|---|
California | Los Angeles (1000000), San Francisco (900000) |
Texas | Austin (900000), Houston (2000000) |
Demo06:最大长度限制
默认情况下,GROUP_CONCAT
的结果字符串有最大长度限制。查询当前最大长度:
SHOW VARIABLES LIKE 'group_concat_max_len';
修改最大长度(例如,设置为 10000 字节):
SET SESSION group_concat_max_len = 10000;
本文原文来自CSDN,作者weixin_48935611
热门推荐
解决.NET中调用第三方HTTP API时的超时与断开问题
解决.NET中调用第三方HTTP API时的超时与断开问题
德国德累斯顿工业大学英文授课项目—硕士篇
哪种药物能够有效缓解痛风石
安全文明施工费率如何计算?
全飞秒与半飞秒近视眼手术的优缺点对比:哪种更适合你?
中国最经典民族乐器曲目
新一代工作模式探索4.5天工作制的未来
预训练GNN真绝了!随随便便就发了CCF-A!
创业公司如何有效地进行风险管理
王师北定中原日,家祭无忘告乃翁。全诗意思及赏析
组合衣柜安装步骤(浴室柜安装高度)
如何识别科技消费概念股的龙头股票
最难的6种考试盘点!考研仅排第五,排名第一、第二的是哪几种
解析脊柱侧弯疗法:德国施罗斯SBP与ISST技术的不同
“二月清明雨不愁,三月清明遍地坟”,今年清明在几月?雨多吗?
提高投资收益的股息率选择策略分析
你以为的养胃好习惯,其实是胃癌“帮凶”
大便拉油是怎么回事
毛线编织完全指南:从选购到编织技巧
智慧之环:揭秘四月龄宝宝头围奥秘
七星鱼养殖技术:从鱼池建造到饲料选择的全程指南
父母如何跟叛逆期的女儿沟通?本文希望能帮助到你!
父亲应该怎样跟女儿相处
英雄没有闪流派大全
改变命运的关键:目标设定、行动、适应与感恩心态的自我修炼
激光雷达和超声波雷达在多个方面存在显著的区别
深入理解信噪比:概念、计算及应用
造谣明星触犯刑法:网络谣言何时休?
6种Win10关闭自动更新方法介绍