2012-03-19 52 views
1

我需要关于SQL ORDER BY子句的帮助。在我下面的表格中,我要订购所有商品,以便子商品立即跟随其父商品。例如,在下面的列表中,最后一项的值为ParentId,值为17,并且其后的项目为ParentId为23,但实际上它应该与其他ParentId=17项目一起出现。SQL订单按条款划分的案例

enter image description here

以类似的方式,如果我以后有ParentId = 9添加行,它应该出现的项目,其ParentId为9,而不是在列表的末尾。

我应该如何对物品进行分类以实现必要的输出?

+0

什么查询你有没有试过这么远吗?请同时发布你的表格结构 – 2012-03-19 15:18:16

+0

我已经阅读了两遍,我无法弄清楚你要做什么。评论:有两个以上的零,你看到的最有可能是插入顺序。另外,这是以你想要的方式在SO中格式化? – 2012-03-19 15:19:13

+0

假设您想要保留0的顺序,表中的其他字段是什么决定了此顺序?您不能使用'自然'无序订单(即没有订单的订单) – 2012-03-19 15:21:45

回答

1

尝试以下查询:

SELECT * 
FROM yourtable 
ORDER BY 
    ISNULL(NULLIF(ParentId, 0), Id), 
    Id /* or maybe Level? */ 
+0

它工作非常感谢 – user1037747 2012-03-21 06:07:25