我怎样才能以逗号分隔列表的形式出现子值?

时间:2013-11-04 12:05:02

标签: mysql sql

我有一个表格,我在同一列中添加父级和子级值但是将其与parentid区分为父级值不会parentid它只会自动递增id并且子值将同时具有自动递增的ID和parentid parentid,其等于父值的id。

这是我的表

id    parentid     q_values
1       0          parentvalue
2       1          childvalue
3       1          childvalue
4       1          childvalue

任何人都可以帮助我如何以逗号分隔列表的形式提供子值?

我试过这个但没有成功。

SELECT 
     q_values,  
     GROUP_CONCAT( CASE WHEN parentid = id THEN q_values END ) AS childvalue,
FROM table_name

结果应如下所示

id     q_values           childvalue
1    parentValue    childvalues, childvalues

2 个答案:

答案 0 :(得分:1)

你需要

  1. 自加入
  2. 添加GROUP BY子句,因为GROUP_CONCAT是一个聚合函数
  3. 这更接近您的解决方案

    SELECT p.q_values as parentvalue,  
         GROUP_CONCAT(c.q_values) AS childvalue,
    FROM table_name AS p
    JOIN table_name AS c
      ON p.id = c.parentid
    WHERE p.parentid = 0
    GROUP BY parentvalue
    ORDER BY parentvalue
    

答案 1 :(得分:0)

要使GROUP_CONCAT正常工作,您的查询中必须有GROUP BY。

http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat