0
是否有任何其他方式來重組這個,而不是使用「WITH」 clasue?SQL「with」子句
下面是代碼:
CREATE table #TEMP
(
RowNum int identity,
ItemId int,
LevelId int,
Id int,
Depth int
)
;WITH CTEAlias
(ItemId, LevelId, Id, Existingdepth) as
(
Select ItemId, LevelId, Id, 0 as ExistingDepth
From tblNavItems
Where NavLevelId In
(Select NavLevelId
From tblNavLevels
Where SoltnId = @FromSoltnID
And NavTypeId = @NavTypeId1)
And ParentId = -1
Union All
Select tni.ItemId, tni.LevelId, tni.Id, ExistingDepth+1
From tblNavItems as tni
Join CTEAlias as ca
On tni.Id = ca.ItemId
Where tni.LevelId In
(Select NavLevelId
From tblNavLevels
Where SoltnId = @FromSoltnID
And NavTypeId = @NavTypeId1)
)
INSERT INTO #TEMP(ItemId, LevelId, Id,Depth)
Select * FROM CTEAlias Order BY Id
我不想「與」條款中,也沒有別名。 請讓我知道是否有任何其他方式來重寫這可能使用兩個表?
爲什麼你不想使用CTE? – JNK
你的目標是什麼?性能?漂亮的代碼?還有別的嗎? – ean5533
@JNK可能使用不支持它們的SQL Server版本。而且,由於您正在遞歸加入CTE,我不認爲您可以使用子查詢。您可能需要訴諸臨時表。 – Yuck