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:每个人都会这样有时长时间坐在无聊的事情上好吧,看来我太鲁莽了!它没有像我预期的那样工作!我想先按父项
排序,然后按前置项
排序父项,您能给我一个输出示例吗?