Mysql 按正确顺序从一个表中选择父项和子项
我有一个表,其中包含父记录和子记录的分层数据。无论使用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
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-在评论之后,我改变了我的答案