mysql - 分层父子关系。自加入或并集或两者兼而有之?

标签 mysql sql join parent-child union

我有一个以下格式的表格:

sid   sname     pid      pname    ppid        pdetail

1.1   ABC       1.1.1    UVW      1.1.1.1      XSXXSX....
1.1   ABC       1.1.1    UVW      1.1.1.2      VDSVS...
1.1   ABC       1.1.2    DEF      1.1.2.1      DSVSDSD..
1.1   ABC       1.1.2    DEF      1.1.2.2      SVSDV...
1.2   XYZ       1.2.1    LMN      1.2.1.1      DFSDSD..
1.2   XYZ       1.2.2    GGF      1.2.2.1       CDSSS...

等等...

我需要获得以下格式的结果..

 Id          Detail        Parentid     ppid        pdetail
 1.1         ABC             NULL      1.1.1.1     XSXXSX..
 1.1.1       UVW              1.1       ..          ...
 1.1.1       UVW              1.1        ..           ..
 1.1.2       DEF              1.1        ..           ..
 1.1.2       DEF              1.1
  1.2        LMN              NULL
 1.2.1       LMN              1.2
 1.2.2       GGF              1.2

我不知道如何继续...任何关于如何进一步进行的帮助都会很好?

最佳答案

您不需要自加入,因为您想要的有关父级的所有信息都已可用。您所要做的就是联合:

select  *
from    (
            select  pid as Id, pname as Detail, sid as ParentId, ppid, pdetail
            from    table
            union all
            select  sid, sname, null, ppid, pdetail
            from table
        )
order by Id

关于mysql - 分层父子关系。自加入或并集或两者兼而有之?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42836666/

相关文章:

mysql - 连接两个表未按预期工作

php - 良好的编码习惯

mysql - 在 MySql 中创建触发器时声明变量

sql - 查找与 mysql 中的一个特定帖子的标签相关的帖子

sql - mysql 左连接查询需要很多时间来执行

php - 使用 PHP Access MS Access 数据库的最佳方式是什么?

mysql - 如何基于 JOINED 表中的 SELECT MAX() 更新 MySQL 表

MySQL 5.6/数据导出不起作用(转储数据)

php - 即使没有结果,也存在一行

MySQL 永无止境 'Copying to tmp table' 与 db View 和 LEFT JOIN