时间:2021-05-26
语法:
GROUP_CONCAT([DISTINCT]expr[,expr...][ORDERBY{unsigned_integer|col_name|expr}[ASC|DESC][,col_name...]][SEPARATORstr_val])
下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据。
SQL代码
复制代码 代码如下:
CREATETABLEstudent_courses(
student_idINTUNSIGNEDNOTNULL,
courses_idINTUNSIGNEDNOTNULL,
KEY(student_id)
);
INSERTINTOstudent_coursesVALUES(1,1),(1,2),(2,3),(2,4),(2,5);
若要查找学生ID为2所选的课程,则使用下面这条SQL:
SQL代码
复制代码 代码如下:
mysql>SELECTstudent_id,courses_idFROMstudent_coursesWHEREstudent_id=2;
+------------+------------+
|student_id|courses_id|
+------------+------------+
|2|3|
|2|4|
|2|5|
+------------+------------+
3rowsINSET(0.00sec)
输出结果有3条记录,说明学生ID为2的学生选了3、4、5这3门课程。
放在PHP里,必须用一个循环才能取到这3条记录,如下所示:
PHP代码
复制代码 代码如下:
foreach($pdo->query("SELECTstudent_id,courses_idFROMstudent_coursesWHEREstudent_id=2")as$row){
$result[]=$row['courses_id'];
}
而如果采用GROUP_CONCAT()函数和GROUPBY语句就显得非常简单了,如下所示:
SQL代码
复制代码 代码如下:
mysql>SELECTstudent_id,GROUP_CONCAT(courses_id)AScoursesFROMstudent_coursesWHEREstudent_id=2GROUPBYstudent_id;
+------------+---------+
|student_id|courses|
+------------+---------+
|2|3,4,5|
+------------+---------+
1rowINSET(0.00sec)
这样php里处理就简单了:
PHP代码
复制代码 代码如下:
$row=$pdo->query("SELECTstudent_id,GROUP_CONCAT(courses_id)AScoursesFROMstudent_coursesWHEREstudent_id=2GROUPBYstudent_id");
$result=explode(',',$row['courses']);
分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:
SQL代码
复制代码 代码如下:
SELECTstudent_id,GROUP_CONCAT(courses_idSEPARATOR'|||')AScoursesFROMstudent_coursesWHEREstudent_id=2GROUPBYstudent_id;
除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:
SQL代码
复制代码 代码如下:
SELECTstudent_id,GROUP_CONCAT(courses_idORDERBYcourses_idDESC)AScoursesFROMstudent_coursesWHEREstudent_id=2GROUPBYstudent_id;
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
本文通过实例介绍了MySQL中的group_concat函数的使用方法,比如selectgroup_concat(name)。MySQL中group_conca
MySQL中group_concat函数,完整的语法如下:复制代码代码如下:group_concat([DISTINCT]要连接的字段[OrderBYASC/D
利用Information_schema系统库来注入,配合使用group_concat()函数,group_concat()功能强大,而且能够绕过limit限制
本文实例讲述了mysql中GROUP_CONCAT的使用方法。分享给大家供大家参考,具体如下:现在有三个表,结构如下:cate表:CREATETABLE`cat
本文实例分析了MySQL统计函数GROUP_CONCAT使用中的陷阱。分享给大家供大家参考,具体如下:最近在用MySQL做一些数据的预处理,经常会用到group