webForumDet fria alternativet

Order By försvinner

6 svar · 264 visningar · startad av Dino

DinoMedlem sedan sep. 20011 914 inlägg
#1

Sql Server 2005.

DECLARE @items TABLE 
( 
	ItemId int, 
	RowId int 
);

INSERT INTO @items
SELECT i.Id, ROW_NUMBER() OVER(ORDER BY i.Priority) 
FROM dbo.Item i
WHERE i.EntryDate BETWEEN @date1 AND @date2

SELECT i.* FROM Item i WHERE i.Id IN (SELECT ItemId FROM @items)

I INSERT INTO...SELECT så sker sorteringen korrekt men i nästa SELECT så försvinner den och sorterar istället efter i.Id. Någon som vet varför?

@ndersMedlem sedan juni 200032 969 inlägg
#2

Du anger ju inte order by i din SELECT, så du får tillbaka posterna i den ordning SQL Servern är mest bekväm med.

DinoMedlem sedan sep. 20011 914 inlägg
#3

Det var la trevligt då. Då sket det sig.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#4
DECLARE @items TABLE 
( 
	ItemId int, 
	RowId int 
);

INSERT INTO @items
SELECT i.Id, ROW_NUMBER() OVER(ORDER BY i.Priority) 
FROM dbo.Item i
WHERE i.EntryDate BETWEEN @date1 AND @date2

SELECT i.* FROM Item i WHERE i.Id IN (SELECT ItemId FROM @items) ORDER BY i.Priority

Kan du inte bara lägga till ORDER BY i.Priority på slutet?

DinoMedlem sedan sep. 20011 914 inlägg
#5

Ovan SP är väldigt nerskuren för att enkelt visa vad jag var ute efter. Den SP jag sitter med består av flera SELECT på varandra så jag hade hoppats att endast kunna göra ORDER BY en gång och sen var det bra. Men fick tillslut göra som ni säger och ha den i varje SELECT.

nitro2k01Medlem sedan aug. 20039 342 inlägg
#6

Rätta mig om jag har fel, men räcker det inte med att lägga ORDER BY-biten i den yttersta frågan, och helt utelämna ORDER BY i resten av frågan?

DinoMedlem sedan sep. 20011 914 inlägg
#7

Nej. I sådana fall hade jag inte skapat denna tråden. :)

133 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)