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

时间:2012-07-17 09:25:46

标签: sql sorting

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

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  

我想编写一个选择查询,首先根据Parent对网页进行“分组”,然后根据Predecessor的值对这些网页进行排序。这是保留那些页面的树结构。不用说,ParentPredecessor是指向同一Id表中Pages的外键。
非常感谢任何帮助:-)提前谢谢你 编辑1 :我正在使用SQL Server
编辑2 :这是一张实际图片:

enter image description here

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

2 个答案:

答案 0 :(得分:1)

试试这个

select PageName from Pages 
order by isnull(Parent,0),ISNULL(Predecessor,0)

答案 1 :(得分:1)

如下所示?

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