2012-03-19 22 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