MySQL Group和Concat多列

时间:2011-06-30 12:44:29

标签: mysql join group-by concat group-concat

我必须从MySQL数据库中添加两个或更多字符串,为此我使用了CONCAT()函数。

这是第一个存储PHP类的表classes

class_id  class_name
--------  ----------
       1  accountant
       2  attendance

另一个存储每个类方法的表methods

class_id  method_name            
--------  -----------------------
       1  __construct            
       1  add_expenses

       2  __construct            
       2  attendance_report

我编写查询以进行连接。

SELECT 
  `cc`.`class_id`,
  `cc`.`class_name`,
  CONCAT(`cm`.`method_name`, ',') AS `method_name` 
FROM
  `classes` AS `cc` 
  LEFT JOIN `methods` AS `cm` 
    ON `cm`.`class_id` = `cc`.`class_id` 
GROUP BY `cc`.`class_name`;

哪个不行。我的预期输出是

class_id  class_name      method_name 
--------  --------------  ------------
       1  accountant      __construct, add_expenses, .... n
       2  attendance      __construct, attendance_report, .... n

有什么想法吗?

1 个答案:

答案 0 :(得分:3)

使用

<强> GROUP_CONCAT

而不是

CONCAT

GROUP_CONCAT(cm.method_name)您不需要将逗号作为默认设置的分隔符传递。