webForumDet fria alternativet

Select top 5 * - fast tvärtom?

ASPur ASP

20 svar · 274 visningar · startad av jimpa

Medlem sedan jan. 2001361 inlägg
Frågan#1

Hej,

Hur skriver man SQL-frågan om man vill visa dom 5 lägsta värderna från en tabell?

Mvh

Medlem sedan mars 2001309 inlägg
#2

Är det inte bara att skriva

Select top 5 * from tabelnamn Order by kolumnnamn desc

------------------
Är man medlem på WF så behöver man inga vänner !

[Redigerat av Tobbster den 05 aug 2001]

[Redigerat av Tobbster den 05 aug 2001]

Medlem sedan dec. 20003 563 inlägg
#3

Jo ;)

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

Medlem sedan dec. 200012 464 inlägg
#4

Nej,

Select top 5 * from tabelnamn Order by kolumnnamn [b]asc[/b]

------------------
essentitia preter non sans multiplicandum

Medlem sedan mars 2001309 inlägg
#5

Men är inte asc default.....

Men det stämmer som LarsG skriver...
I bland svara man innan man tänkt....

------------------
Är man medlem på WF så behöver man inga vänner !

[Redigerat av Tobbster den 05 aug 2001]

Medlem sedan dec. 20003 563 inlägg
#6

Was ist das asc?

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

Medlem sedan mars 2001309 inlägg
#7

asc är stigande ordning och Desc fallande.....

------------------
Är man medlem på WF så behöver man inga vänner !

Medlem sedan dec. 200012 464 inlägg
#8

Jo asc är default, så man kan utelämna det, om man vil.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 20003 563 inlägg
#9

DESC var det naturliga svaret när man inte tänker på frågan. :r

------------------
MVH // Cyprys
Cyprys
Synd att du inte kan köpa en voodoojordglob och sedan snurra på den fort som fan och skrämma skiten ur alla.

Medlem sedan maj 200010 687 inlägg
#10

Men om man vill hämta de fem med högst värde, men ordna dem ascending..?

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

Medlem sedan dec. 200012 464 inlägg
#11

Ett ineffektivt sätt

select * from ogrish where id in (select top 5 id from ogrish order by id desc) order by id asc

Annars kan göra


sql = "select top 5 * from ogrish order by id desc"
set rs = server.createobject("adodb.recordset")
rs.open sql,connection,2
rs.movelast
while not rs.bof
'skriv
rs.moveprevious
wend

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 200010 687 inlägg
#12

Okej, men kan man välja de 10 högsta värdena och sen av de tio välja de fem lägsta och ordna de ascending?
Vill lära mig "nästla" sql frågor.

Tänkte man kunde använda det till paging. Borde bli bättre prestanda än att hämta allt och sen använda rs.Move X..

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

Medlem sedan dec. 200012 464 inlägg
#13

Jo du kan ju nästa godtyckligt, men att använda det till paging är nog inte så bra. Join kostar ganska mycket speciellt om man använder not in som det blir om man vill ha det till paging). PatrikB gjorde lite mätningar på det och kom fram till att det var bättre att inte använda den metodiken. Disconnectade recordset/getrows är nog bättre

(För att svara på din fråga dock.)


select top 5 * from ogrish where id in (select top 10 id from ogrish order by id desc) order by id asc

------------------
essentitia preter non sans multiplicandum

Medlem sedan jan. 2001271 inlägg
#14

Det är väl så LarsG har gjort i sitt tidigare svar, bara att lägga till ytterligare en top-sats i den yttre SQL-satsen?

------------------
Andreas Nordenmark

Medlem sedan maj 200010 687 inlägg
#15

Jo jag upptäckte nyss det. :)

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

Medlem sedan jan. 2001271 inlägg
#16

En off-topic fråga, verkar som många här skriver sina SQL-satser på en rad - varför? Måste bli väldigt jobbigt när uttrycken växer och man jobbar med några nästlade frågor...

------------------
Andreas Nordenmark

Medlem sedan maj 200010 687 inlägg
#17

Hmm, går det inte att skriva så här:

select top (select count(postid) from tblpost) * from tblpost

Meningslöst som det är skrivet nu. Men skulle man göra om lite så hade den kunnat vara användbar..

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

Medlem sedan dec. 200012 464 inlägg
#18

Nej, argumentet till top måste vara en konstant.

------------------
essentitia preter non sans multiplicandum

Medlem sedan maj 200010 687 inlägg
#19

När jag skriver mina frågor i Query Analyzern så skriver jag alltid dem på flera rader. Sen när jag läger in SQL-strängen i VB-koden så brukar jag om jag tycker det är nödvändigt radbryta så här:

sql =	"SELECT tblPost.*, tblForum.*, " & _
	"(SELECT COUNT(*) FROM tblPost) AS PostCount FROM tblPost " & _
	"INNER JOIN tblForum ON tblPost.ForumId = tblForum.ForumId " & _
	"WHERE PostId > 10 " & _
	"ORDER BY PostId ASC"

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

Medlem sedan maj 200010 687 inlägg
#20

Okej.. :l

------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/

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