按正确顺序从一个表中选择父项和子项

时间:2016-06-06 11:39:19

标签: mysql sql

我有一个包含父级和子级记录的分层数据的表。我想以正确的顺序选择它们,无论使用MySql记录在表中的数据的顺序如何。如何使用单个查询列出以下示例中的以下数据?

Ex:表

ID | Title | Parent
1  | A     | 0
2  | B     | 1
3  | C     | 1
4  | D     | 0
5  | E     | 4
6  | F     | 4
7  | G     | 0
8  | H     | 7
9  | I     | 1
10 | J     | 4

向..

ID | Title | Parent
1  | A     | 0
2  | B     | 1
3  | C     | 1
9  | I     | 1
4  | D     | 0
5  | E     | 4
6  | F     | 4
10 | J     | 4
7  | G     | 0
8  | H     | 7

2 个答案:

答案 0 :(得分:1)

您可以尝试在CASE EXPRESSION子句中使用ORDER BY

SELECT t.*
FROM YourTable t
ORDER BY CASE WHEN t.Parent = 0 THEN t.ID ELSE t.Parent END,
         t.ID

注意:这适用于您提供的数据,它不适用于超过1级的层次结构!

答案 1 :(得分:-1)

这就是你要找的东西吗?

SELECT * FROM myTable
ORDER BY IF(Parent = 0 ,id,Parent);