我SQL Server 2008中有一張桌子稱爲ProductCategories這樣設計的:SQL服務器:選擇親子
Id | Name | ParentId
71 PCs NULL
32 MACs NULL
3 Keyboard 1
9 Mouse 1
5 Screen 1
11 Keyboard 2
7 Mouse 2
8 Screen 2
我想從該表中選擇,並獲得設定類似的結果這樣的:
Id | Name | ParentId
71 PCs NULL
3 Keyboard 1
9 Mouse 1
5 Screen 1
32 MACs NULL
11 Keyboard 2
7 Mouse 2
8 Screen 2
我想這一點,但是這顯然給了我無的ParentId第一的那些:
WITH Hierarchy
AS
(
SELECT
T1.Id, T1.ParentId
FROM
ProductCategories T1
WHERE
T1.parentid IS NULL OR
T1.parentid IN (SELECT id from ProductCategories WHERE parentid IS NULL)
UNION ALL
SELECT
T1.Id, T1.ParentId
FROM
ProductCategories T1
INNER JOIN
Hierarchy TH ON TH.Id = T1.ParentId
)
select *
from Hierarchy
order by parentid
請幫助我,如果你能:)
- 誰不知道SQL的傢伙
你想要做什麼(英文)?我不能從你包含的輸出中反向設計你的意圖。有很多方法可以從數據中生成輸出,但可能很少有這樣的方法可以根據不同的數據生成「正確」輸出(這是您想要的)... – 2009-09-09 13:37:53
結果集的不同之處如何?來自表中的原始數據,而不是未記錄的排序順序? – RedFilter 2009-09-09 13:39:37
要澄清這一點:這張表是指自己?是的,顯然它確實如此。 – 2009-09-09 13:40:05