如何选择父标识的分层表?
我有一张这样的桌子
+-----------+------------+-------------+
| id | parent_id | name |
+-----------+------------+-------------+
|1 | 0 | a |
+-----------+------------+-------------+
|2 | 1 | a1 |
+-----------+------------+-------------+
|3 | 0 | b |
+-----------+------------+-------------+
|4 | 3 | b1 |
+-----------+------------+-------------+
|5 | 3 | b2 |
+-----------+------------+-------------+
我想把桌子摆成这样
+-----------+------------+-------------+
| id | name | parent |
+-----------+------------+-------------+
|1 | a | NULL |
+-----------+------------+-------------+
|2 | a1 | a |
+-----------+------------+-------------+
|3 | b | NULL |
+-----------+------------+-------------+
|4 | b1 | b |
+-----------+------------+-------------+
|5 | b2 | b |
+-----------+------------+-------------+
可以这样创建select吗?任何人知道如何在Postgre或MySQL中创建这个,请给我一些建议,
最佳答案
简单使用Aleft join
:
select t1.id, t1.name, t2.name as parent
from yourtable t1
left join yourtable t2
on t1.parent_id = t2.id
order by t1.id