webForumDet fria alternativet

Sista 3 posterna i rätt ordning?

Databaser & SQL

6 svar · 368 visningar · startad av inspiro

Medlem sedan sep. 2005673 inlägg
Frågan#1

Hej! Jag försöker få de tre sista posterna från en tabell men behålla ordningen på dem. Alltså funkar inte detta riktigt:

select top 3 * from tabell order by id desc

...eftersom den sista posten då kommer först. Jag vill att den tredje sista posten kommer först.

Medlem sedan mars 20032 667 inlägg
#2
ORDER BY id ASC

eller hur menar du? Vilken data har du och vad förväntar du dig för resultat?

Medlem sedan sep. 2005673 inlägg
#3

säg att jag har en tabell med 1,2,3,4,5 ... då vill jag få ut 3,4,5 i den ordningen. Sorterar man dem bakifrån och tar ut de första posterna får man ju ut 5,4,3... tänkte om man kunde ändra ordningen redan i sql-satsen så man slipper koda!

Medlem sedan sep. 2005673 inlägg
#4

Det löste sig, jag gjorde så här:

SELECT * FROM 
   (SELECT TOP(3) * FROM Tabell ORDER BY id DESC) 
ORDER BY id
Medlem sedan mars 20032 667 inlägg
#5

Ascending (ASC) = stigande sortering
Descending (DESC) = fallande sortering

ASC är default om något inte anges.

Medlem sedan sep. 2005673 inlägg
#6

Mer problem. Koden jag skrev här ovan fungerar i sql-server men lägger jag in koden på sidan så får jag följande fel:

System.Data.SqlClient.SqlException: Incorrect syntax near the keyword 'ORDER'. at System.Data.SqlClient.SqlConnection.

Medlem sedan juni 200032 967 inlägg
#7

Du måste lägga till ett namn för din subquery.

SELECT * FROM 
   (SELECT TOP(3) * FROM Tabell ORDER BY id DESC) [b]foo[/b]
ORDER BY id
265 ms totalt · 4 externa anrop · v20260731065814-full.2f471f9e
129 ms — deklarationer (db)
0 ms — hämta statistik (cache)
132 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)