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

从mysql中的子id获取父id的详细信息,mysql,sql,join,select,recursive-query,Mysql,Sql,Join,Select,Recursive Query,我正在创建一个消息传递应用程序。我有一个带有父id的表,用于标识它是主键消息的子级。现在我想得到父母的详细信息,我有了孩子的可用id。 类似于选择条件id为28的parent=0的值 这是我的表的结构和示例数据 message_tbl id message date parent_msg 27 hello 2020-05-24 15:03:40

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

对于一级关系,自联接将执行以下操作:

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

谢谢如果我有很多数据,你认为这样可以吗?