如何让子行在mysql的同一个父表中行

时间:2018-05-02 02:31:31

标签: mysql

我需要你的建议,如何查询这种情况。

我有Table Thread,字段为:

-id 
-author_id
-content_id
-parent_id
-type

以下是表thread中的行:

id   author_Id   content_id  parent_id  type
1    3           60                      3
2    3           1           1           2
3    3           2           1           2
4    3           61                      3
5    3           1           4           2
6    3           2           4           2
7    3           63                      1
8    3           62                      1

如何查询包含孩子的父母?提前致谢

1 个答案:

答案 0 :(得分:0)

如果您只想获得包含父母数据的孩子的列表,那么此query应该有效:

SELECT t1.id, t1.author_id, t1.content_id, t1.type, IFNULL(GROUP_CONCAT(t2.id), '') as children
FROM Thread t1
LEFT JOIN Thread t2
ON t2.parent_id = t1.id
GROUP BY t1.id

输出:

id  author_id   content_id  type    children
1   3           60          3       2,3
2   3           1           2   
3   3           2           2   
4   3           61          3       5,6
5   3           1           2   
6   3           2           2   

要仅为有孩子的父母提供数据,请将LEFT JOIN更改为JOIN

SELECT t1.id, t1.author_id, t1.content_id, t1.type, IFNULL(GROUP_CONCAT(t2.id), '') as children
FROM Thread t1
JOIN Thread t2
ON t2.parent_id = t1.id
GROUP BY t1.id

输出:

id  author_id   content_id  type    children
1   3           60          3       2,3
4   3           61          3       5,6