0

我有一张表,在其中我在同一列中添加父值和子值,但将它们与parentid 类似的父值区分开来parentid不会只有自动递增id,子值将同时具有自动递增的 Id 和 parentidparentid是相等的到父值的 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
4

2 回答 2

1

你需要

  1. 自加入
  2. 添加一个GROUP BY子句,因为 GROUP_CONCAT 是一个聚合函数

这更接近您的解决方案

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
于 2013-11-04T12:26:54.557 回答
0

要使 GROUP_CONCAT 起作用,您的查询中必须有 GROUP BY。

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

于 2013-11-04T12:23:43.037 回答