复杂的mysql查询。返回多行作为单行

时间:2015-06-29 13:50:16

标签: mysql

我目前有以下SQL查询,它从表中检索记录,也是它的父母和祖父母。我唯一的问题是它作为单个记录返回。我希望它以多行的形式返回,因为它存储在数据库中。

目前的结构:

comment_id | parent_comment_id
    1              3
    2              7
    3              5
    7              11

SQL:

SELECT p3.comment_id as `Grandparent`, p2.comment_id as `Parent`, p1.comment_id as `Child`
FROM comments p1
LEFT JOIN comments p2 on p1.comment_id = p2.parent_comment_id
LEFT JOIN comments p3 on p2.parent_comment_id = p3.comment_id
WHERE p1.comment_id = 1

当前输出(单行):

Grandparent | Parent | Child  
     5          3        1

期望的输出(单独的行):

comment_id
     5
     3
     1

我正在修改一些现有的mysql代码,目前我无法将所有内容转换为mysqlipdo

1 个答案:

答案 0 :(得分:0)

试试这个:

select comment_id from cm where comment_id = 1
union 
select parent_comment_id from cm where comment_id =1
union
select g.parent_comment_id from cm g
join cm p
on p.parent_comment_id = g.comment_id
where p.comment_id = 1;

请验证逻辑并确保它能为您提供正确的结果。

演示:SQLFiddle