Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询将行分组在一起,然后在这些组中排序_Sql_Sorting - Fatal编程技术网

Sql 查询将行分组在一起,然后在这些组中排序

Sql 查询将行分组在一起,然后在这些组中排序,sql,sorting,Sql,Sorting,这个问题听起来可能有点奇怪。我有一个页面表格如下: Id PageName Parent Predecessor 1 Home null null 2 About null 1 3 Contact me 2 null 4 My Resume 2 3 所以基本上是这样的: Home About |--Contact me |--My r

这个问题听起来可能有点奇怪。我有一个
页面
表格如下:

Id    PageName    Parent    Predecessor  
1     Home        null      null  
2     About       null      1  
3     Contact me  2         null  
4     My Resume   2         3
所以基本上是这样的:

Home  
About  
|--Contact me  
|--My resume  
我想编写一个select查询,首先根据其
父项对页面进行“分组”,然后根据其
前置项的值对这些组进行排序。这就是保留这些页面的树结构。不用说,
父项
前置项
是指向同一
页面
表中的
Id
的外键。
非常感谢您的帮助:-)提前感谢
编辑1:我正在使用SQL Server
编辑2:这是一张真实的图片:

它应该在下面显示“联系我”关于(如
Parent
字段所示)
注意:在本示例中,
顺序
不是外键。它只是一个用于排序的
int

试试这个

select PageName from Pages 
order by isnull(Parent,0),ISNULL(Predecessor,0)
像下面这样的

SELECT t1.*,t2.* FROM test t1 LEFT JOIN test t2 
ON t1.id=t2.parent
WHERE t1.parent IS NULL
ORDER BY t1.id,t2.id 

您使用的是哪种数据库管理系统?神谕PostgreSQL?火鸟?事实上,我觉得问这个问题很愚蠢。。。你的解决方案显然有效。我花了几个小时考虑使用GROUPBY子句。。。一定是睡眠不足!谢谢你,伙计:-)@M2X:每个人都会这样有时长时间坐在无聊的事情上好吧,看来我太鲁莽了!它没有像我预期的那样工作!我想先按
父项
排序,然后按
前置项
排序父项,您能给我一个输出示例吗?