我有一个有两列的表(case和subcase)
以及以下值:

case subcase
1    0
2    1
3    1
4    0
5    0
6    4

我想要一个只有子类的案例列表
比如:
case  list_of_subcase
1     2,3
4     6
5     0

案例2、3和6未列出,因为它们是子类别。
案例5没有子类,但不是子类本身。
如何写出正确的选文?有什么帮助吗?

最佳答案

我们是否有过度思考的危险。。。

DROP TABLE my_table;

CREATE TABLE my_table
(my_case INT NOT NULL
,subcase INT NULL
);

INSERT INTO my_table VALUES
(1    ,NULL),
(2    ,1),
(3    ,1),
(4    ,NULL),
(5    ,NULL),
(6    ,4);

SELECT x.my_case
     , GROUP_CONCAT(y.my_case) subcases
  FROM my_table x
  LEFT
  JOIN my_table y
    ON y.subcase = x.my_case
 WHERE x.subcase IS NULL
 GROUP
    BY x.my_case;
+---------+----------+
| my_case | subcases |
+---------+----------+
|       1 | 2,3      |
|       4 | 6        |
|       5 | NULL     |
+---------+----------+

10-08 16:36