易截截图软件、单文件、免安装、纯绿色、仅160KB

Mysql的GROUP_CONCAT()函数使用方法 多行合并函数

GROUP_CONCAT 是一个合并多行的函数,一般用的少,所以很多人都不知道,我也是一个,今天偶然看到,故记下方法;
GROUP_CONCAT的语法如下:
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:
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代码
复制代码 代码如下:


相关文档:

Mysql 错误 1067

启动Mysql 错误 1067 进程意外终止的一种解决方法
mysqld-nt --defaults-file=my.ini --standalone --console
查看信息内容
发现MYSQL INNODB初始化错误。
错误如下:
InnoDB: The first specified data file .\ibdata1 did not exist:
InnoDB: a new database to be created!
100115 10:14:04  InnoDB: Setti ......

使用游标实现 mysql 存储过程中的循环

create   procedure   all_joiner_message(   in   captions   varchar(255),  in contents text,   in objectid int, in types int  ,  out count int)
begin
 declare   userids   int;
 DECLARE _done IN ......

MySQL Cluster Multi Computer Installation

    
Each MySQL Cluster host computer running an SQL node must have
installed on it a MySQL binary. For management nodes and data
nodes, it is not necessary to install the MySQL server binary, but
management nodes require the management server daemon
......

MySQL Cluster Multi Computer Configuration


For our four-node, four-host MySQL Cluster, it is necessary to
write four configuration files, one per node host.

Each data node or SQL node requires a
my.cnf
file that provides two pieces of
information: a connectstring
that tells
......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号