MySQL中Group_Concat函数妙用

Group_Concat 是 MySQL 中用户Group By 的一个函数,函数语法如下:

  1. GROUP_CONCAT([DISTINCT] expr [,expr …]
  2.     [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col …]]
  3.     [SEPARATOR str_val])

这个函数在 MySQL 4.1 中被加入。函数返回一个字符串结果,该结果由分组中的值连接组合而成。

充分利用此函数,可以简化我们程序中的一些写法。
比如我们现在有一个学生成绩表,为了方便不同班级科目的设置,对学生的成绩没有采用一条记录多个字段的方式,而是采用多条记录一个成绩字段方式存储。

  1.   CREATE TABLE stu_grade(
  2.     `id` smallint(5) UNSIGNED NOT NULL DEFAULT '0',
  3.     stuname varchar(20), #学生姓名
  4.     course   varchar(20), #科目名称
  5.     score    int, #本科目成绩
  6.     KEY `id` (`id`)
  7.   ) TYPE=MyISAM;

现在要求获得一个班级中学生各科成绩列表。
通过Group_Concat 函数,我们只要简单执行如下的SQL语句,

  1.   SELECT `stuname`,
  2.       GROUP_CONCAT(concat(`course`, ':', score)
  3.                    ORDER BY `course` DESC SEPARATOR ",") AS Result
  4.       FROM `stu_grade`
  5.       GROUP BY `stuname`;

然后在程序中通过一个循环,将选出的结果输出来就可以了。如果不使用,我们通常需要将选出来的数据做再次整理,(多增加一些变量做一些循环判断,没有采用Group_Concat后的逻辑简单)

Popularity: 3% [?]

Related

Comments

Leave a Reply