从mysql中的子ID获取父ID的详细信息

问题描述 投票:0回答:1

我正在创建消息传递应用程序。我有一个带有父ID的表,以标识它是主键消息的子代。现在,我想获取父母的详细信息,并且有孩子的可用ID。例如选择条件为id = 28的parent = 0的值。

这是我的表的结构和示例数据。

                     message_tbl
 id          message          date               parent_msg
 27          hello     2020-05-24 15:03:40           0
 28          world     2020-05-24 15:04:17           27

我想要这样的结果:

27          hello     2020-05-24 15:03:40           0

这里是sqlfiddle的结构:http://sqlfiddle.com/#!9/2b18d2

mysql sql join select recursive-query
1个回答
1
投票

对于单层关系,将进行自我连接:

select mp.*
from message_tbl mp
inner join message_tbl mc on mc.parent_msg = mp.id
where mc.id = 28

如果级别的数量可变,则可以使用递归查询(仅在MyQSL 8.0中可用):

with recursive cte as (
    select * from message_tbl where id = 28
    union all
    select m.*
    from message_tbl m
    inner join cte c on c.parent_msg = m.id
)
select * from cte where parent_msg = 0
© www.soinside.com 2019 - 2024. All rights reserved.