语法:
GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer |
col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])
下面演示一下这个函数,先建立一个学生选课表student_courses,并填充一些测试数据。
SQL代码
-
CREATE TABLE student_courses (
-
student_id INT UNSIGNED NOT NULL,
-
courses_id INT UNSIGNED NOT NULL,
-
KEY(student_id)
-
);
-
INSERT INTO student_courses VALUES (1
,
1
), (
1
,
2
), (
2
,
3
), (
2
,
4
), (
2
,
5
);
若要查找学生ID为2所选的课程,则使用下面这条SQL:
-
mysql> SELECT student_id, courses_id FROM student_courses WHERE student_id=
2
;
-
+------------+------------+
-
| student_id | courses_id |
-
+------------+------------+
-
| 2
|
3
|
-
| 2
|
4
|
-
| 2
|
5
|
-
+------------+------------+
-
3
rows IN SET (
0.00
sec)
输出结果有3条记录,说明学生ID为2的学生选了3、4、5这3门课程。
放在PHP里,必须用一个循环才能取到这3条记录,如下所示:
PHP代码
-
foreach ($pdo->query(
"SELECT student_id, courses_id FROM student_courses WHERE student_id=2"
) as $row) {
-
$result[] = $row['courses_id'
];
-
}
而如果采用GROUP_CONCAT()函数和GROUP BY语句就显得非常简单了,如下所示:
SQL代码
-
mysql> SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=
2
GROUP BY student_id;
-
+------------+---------+
-
| student_id | courses |
-
+------------+---------+
-
| 2
|
3
,
4
,
5
|
-
+------------+---------+
-
1
row IN SET (
0.00
sec)
这样php里处理就简单了:
PHP代码
-
$row = $pdo->query(
"SELECT student_id, GROUP_CONCAT(courses_id) AS courses FROM student_courses WHERE student_id=2 GROUP BY student_id"
);
-
$result = explode(','
, $row[
'courses'
]);
分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“|||”,则使用SEPARATOR来指定,例如:
SQL代码
-
SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR
'|||'
) AS courses FROM student_courses WHERE student_id=
2
GROUP BY student_id;
除此之外,还可以对这个组的值来进行排序再连接成字符串,例如按courses_id降序来排:
SQL代码
-
SELECT student_id, GROUP_CONCAT(courses_id ORDER BY courses_id DESC) AS courses FROM student_courses WHERE student_id=
2
GROUP BY student_id;
分享到:
相关推荐
`GROUP_CONCAT` 的基本语法如下: ```sql GROUP_CONCAT([DISTINCT] expr [, expr] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [, col_name]] [SEPARATOR str_val]) ``` 其中: - **`expr`**:...
标题中的"wm_concat函数所需资源包"是指解决`WM_CONCAT()`在新版本Oracle中无法使用的问题的相关资源集合。 描述中提到的链接指向了一篇CSDN博客文章,该文章提供了详细的解决方案。在这里,我们将深入探讨`WM_...
GROUP_CONCAT()函数的基本语法如下: ```sql GROUP_CONCAT([DISTINCT] expr[, expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [, col_name ...]] [SEPARATOR str_val]) ``` 1. `...
首先,GROUP_CONCAT的基本语法是: ```sql GROUP_CONCAT(column_name [ORDER BY column_name2 [ASC|DESC]] [SEPARATOR 'string']) ``` 这个函数在分组查询中用于将同一组内某一列的所有非NULL值合并为一个字符串,每...
2. GROUP_CONCAT 函数的结果集最大长度为 1024 字符,可以使用 `GROUP_CONCAT_MAX_LEN` 系统变量来调整结果集的最大长度。 3. GROUP_CONCAT 函数忽略空值,可以使用 `COALESCE` 函数来处理空值。 GROUP_CONCAT 函数...
`GROUP_CONCAT`的基本语法如下: ```sql GROUP_CONCAT([DISTINCT] column_name [ORDER BY ASC|DESC column_name] [SEPARATOR 'separator_string']) ``` - `DISTINCT`:可选,用于去除重复的值。 - `column_name`:...
`GROUP_CONCAT`的基本语法如下: ```sql SELECT GROUP_CONCAT(column_name SEPARATOR 'delimiter') FROM table_name GROUP BY group_column; ``` 这里,`column_name`是要合并的列,`separator`是自定义的分隔符...
下面我们将详细探讨`GROUP_CONCAT`的使用方式和相关特性。 ### 1. `GROUP_CONCAT`的基本语法 `GROUP_CONCAT`函数的基本语法如下: ```sql GROUP_CONCAT([DISTINCT] expr [ORDER BY expr [ASC | DESC]] [SEPARATOR...
首先,`GROUP_CONCAT()`函数的基本语法是: ```sql SELECT GROUP_CONCAT(column_name) FROM table_name WHERE condition GROUP BY group_column; ``` 其中,`column_name`是你希望合并的字段,`table_name`是表名,`...
`GROUP_CONCAT()` 的基本语法如下: ```sql GROUP_CONCAT([DISTINCT] expr [ORDER BY expr [ASC|DESC]] [SEPARATOR str_val]) ``` 在这个语法中,`expr` 是你想包含在结果中的列或表达式,`DISTINCT` 可以用于去除...
`wmsys.wm_concat`函数的基本语法如下: ```sql wmsys.wm_concat(column1, column2, ..., columnN) ``` 该函数接受任意数量的参数,并将它们连接成一个字符串。在实际应用中,`column1`, `column2`, ..., `columnN...
**GROUP_CONCAT的基本语法:** ```sql GROUP_CONCAT([DISTINCT] expr [,expr ...] [ORDER BY {unsigned_integer | col_name | expr} [ASC | DESC] [,col_name ...]] [SEPARATOR str_val]) ``` - `DISTINCT`:可...
例如,如果你有一个`orders`表,其中包含`customer_id`和`product_name`字段,你可以使用`GROUP_CONCAT`来获取每个客户的所有订单产品名,以逗号分隔: ```sql SELECT customer_id, GROUP_CONCAT(product_name) AS ...
`GROUP_CONCAT` 的基本语法如下: ```sql GROUP_CONCAT([DISTINCT] 要连接的字段 [Order BY 排序字段 ASC/DESC] [Separator ‘分隔符']) ``` - `DISTINCT`:可选,用于去除重复的值。 - `要连接的字段`:指定你想...
GROUP_CONCAT的基本语法是: ```sql GROUP_CONCAT([DISTINCT] column_name [ORDER BY ... [SEPARATOR '']] ) ``` - `column_name`: 指定你想要合并的列名。 - `DISTINCT`: 可选,用于去除重复的值。 - `ORDER BY`: ...
最后,关于可能感兴趣的相关文章,包括Oracle中多行记录合并、连接、聚合字符串的不同方法,以及如何在Oracle中实现类似功能的其他技术,如使用`GROUP_CONCAT`(这是MySQL中的一个函数,Oracle没有直接对应的内置...