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

nxagd54h  于 2021-07-26  发布在  Java
关注(0)|答案(1)|浏览(466)

我正在创建一个消息传递应用程序。我有一个带有父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型

7lrncoxx

7lrncoxx1#

对于一级关系,自联接可以:

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

如果级别数可变,则可以使用递归查询(仅在myqsl8.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

相关问题