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

Mysql 按正确顺序从一个表中选择父项和子项,mysql,sql,Mysql,Sql,我有一个表,其中包含父记录和子记录的分层数据。无论使用MySql在表中记录的数据的顺序如何,我都希望以正确的顺序选择它们。如何使用单个查询在下面的示例中列出以下数据 例:桌子 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

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

例:桌子

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

这就是你要找的吗

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

这就是你要找的吗

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

您可以尝试在
ORDER BY
子句中使用
大小写表达式

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

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

您可以尝试在
ORDER BY
子句中使用
大小写表达式

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

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

获取第二个表的基础是什么?获取第二个表的基础是什么?它是单级层次结构。非常感谢。它成功了。是的,它是单层次的。非常感谢。它起作用了。@Error404-在评论之后,我改变了我的答案@Error404-在评论之后,我改变了我的答案