手册上是这样说的:
GROUP_CONCAT([DISTINCT] expr [,expr ...][ORDER BY {unsigned_integer | col_name | expr}[ASC | DESC] [,col_name ...]][SEPARATOR str_val])
通常这个函数是和group by一起使用的。
效果是把想要查询的分组中的某个其他字段使用符号连接起来,按一条数据查询出来。
举个例子吧。
team_id是某个团购的项目id,order_id是该项目的订单id。
想要查询项目id为9的所有订单的id。
sql语句为:
SELECT team_id, GROUP_CONCAT(order_id) AS orders FROM TABLENAME WHERE team_id=9 GROUP BY team_id;
结果为:
+------------+---------+
| team_id | orders |
+------------+---------+
| 9 | 3,4,5 |
+------------+---------+
1 row IN SET (0.00 sec)
还可以使用SEPARATOR来定义分隔符。
SELECT team_id, GROUP_CONCAT(order_id SEPARATOR ‘|’ ) AS orders FROM TABLENAME WHERE team_id=9 GROUP BY team_id;
则查询的结果为“3|4|5”
接下来给order_id进行排序查询
SELECT team_id, GROUP_CONCAT(order_id ORDER BY order_id DESC SEPARATOR ‘|’) AS orders FROM TABLENAME WHERE team_id=9 GROUP BY team_id;