博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL函数GROUP_CONCAT
阅读量:4670 次
发布时间:2019-06-09

本文共 2109 字,大约阅读时间需要 7 分钟。

该函数返回带有来自一个组的连接的非NULL值的字符串结果。该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数。

语法结构:

 

GROUP_CONCAT([
DISTINCT
] expr [,expr ...] [
ORDER 
BY 
{unsigned_integer | col_name | expr} [
ASC 
|
DESC
] [,col_name ...]] [SEPARATOR str_val])

 

DISTINCT:去除重复值

expr [,expr ...]:一个或多个字段(或表达式)

ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]:根据字段或表达式进行排序,可多个

SEPARATOR str_val:分隔符(默认为英文逗号)

 

示例1:查询某分类的所有子分类并用逗号连接子分类ID

 

mysql>
SELECT 
GROUP_CONCAT(cat_id)
FROM 
goods_cat
WHERE 
pid = 25
+
-----------------------------+
| GROUP_CONCAT(cat_id)        |
+
-----------------------------+
| 26,111,130,206,239,322,323  |
+
-----------------------------+

 

 

示例2:查询某分类的所有子分类并用分号连接子分类ID

mysql>
SELECT 
GROUP_CONCAT(cat_id SEPARATOR
';'
)
FROM 
goods_cat
WHERE 
pid = 25
+
-------------------------------------+
| GROUP_CONCAT(cat_id SEPARATOR
';'
)  |
+
-------------------------------------+
| 26;111;130;206;239;322;323          |
+
-------------------------------------+

 

示例3:查询某分类的所有子分类,根据p_order ASC, cat_id DESC排序后再连接

mysql>
SELECT 
GROUP_CONCAT(cat_id
ORDER 
BY 
p_order
ASC
, cat_id
DESC
)
FROM 
goods_cat
WHERE 
pid = 25
+
----------------------------------------------------------+
| GROUP_CONCAT(cat_id
ORDER 
BY 
p_order
ASC
, cat_id
DESC
)   |
+
----------------------------------------------------------+
| 332,331,242,212,133,112,29,26,333,330,327,244,138,116    |
+
----------------------------------------------------------+

 

示例4:结合GROUP BY查询

mysql>
SELECT 
pid, GROUP_CONCAT(cat_id)
FROM 
goods_cat
GROUP 
BY 
pid
+
-----------+-------------------------------------+
| parent_id | GROUP_CONCAT(cat_id)                |
+
-----------+-------------------------------------+
|        22 | 35,166,191,209,233,252,256,257,258  |
|        25 | 26,111,130,206,239,322,323          |
|        26 | 29,51,65,66,70,75,238               |
|       323 | 332,333,334,335,336,337,338,339     |
+
-----------+-------------------------------------+

 

注意:

1. 最大长度(字符)限制

系统变量:group_concat_max_len

SET 
[SESSION |
GLOBAL
] group_concat_max_len = val;

val必须是无符号整数

用了GROUP_CONCAT函数,SELECT语句中的LIMIT语句起不了任何作用。

2. INT类型陷阱

连接的字段为INT类型时,低版本或出现返回的结果不是逗号分隔的字符串,而是byte[]。

此时,需要用CAST或CONVERT函数进行转换。

转载于:https://www.cnblogs.com/mytzq/p/7090193.html

你可能感兴趣的文章
java调用支付宝接口代码介绍
查看>>
安装apache 后,找不到服务,解决办法
查看>>
【洛谷 T47488】 D:希望 (点分治)
查看>>
spring-MVC访问静态资源
查看>>
JavaScript异步加载与同步加载
查看>>
Eclipse搭建springboot项目(六)全局异常
查看>>
Android 报错:error: too many padding sections on bottom border
查看>>
IOS开发 ios7适配
查看>>
1806. [NOIP2014]无线网路发射器选址
查看>>
根据指定的commit查找对应的log
查看>>
处理和引发事件的规范
查看>>
点击LinearLayout使用selector改变TextView字体颜色
查看>>
Markdown入门指南-指间阁
查看>>
Android Support Annotations
查看>>
JAVA设计模式之享元模式
查看>>
命令行添加删除tomcat服务
查看>>
myEclipse怎样将程序部署到tomcat(附录MyEclipse调试快捷键)
查看>>
Unity UGUI——UI基础,Canvas
查看>>
如果战斗机飞行员弹出,自动驾驶仪会接管飞机安全降落么?
查看>>
Windows Azure Azure 简介
查看>>