MySQL中Group_Concat函数妙用
Group_Concat 是 MySQL 中用户Group By 的一个函数,函数语法如下:
-
GROUP_CONCAT([DISTINCT] expr [,expr …]
-
[ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
-
[SEPARATOR str_val])
这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成。
充分利用此函数,可以简化我们程序中的一些写法。
比如我们现在有一个学生成绩表,为了方便不同班级科目的设置,对学生的成绩没有采用一条记录多个字段的方式,而是采用多条记录一个成绩字段方式存储。
-
CREATE TABLE stu_grade(
-
`id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
-
stuname varchar(20), #学生姓名
-
course varchar(20), #科目名称
-
score int, #本科目成绩
-
KEY `id` (`id`)
-
) TYPE=MyISAM;
现在要求获得一个班级中学生各科成绩列表。
通过Group_Concat 函数,我们只要简单执行如下的SQL语句,
-
SELECT `stuname`,
-
GROUP_CONCAT(concat(`course`, ':', score)
-
ORDER BY `course` DESC SEPARATOR ",") AS Result
-
FROM `stu_grade`
-
GROUP BY `stuname`;
然后在程序中通过一个循环,将选出的结果输出来就可以了。如果不使用,我们通常需要将选出来的数据做再次整理,(多增加一些变量做一些循环判断,没有采用Group_Concat后的逻辑简单)
Popularity: 6% [?]