Ä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]
20 svar · 274 visningar · startad av jimpa
Ä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]
Nej,
Select top 5 * from tabelnamn Order by kolumnnamn [b]asc[/b]
------------------
essentitia preter non sans multiplicandum
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]
asc är stigande ordning och Desc fallande.....
------------------
Är man medlem på WF så behöver man inga vänner !
Jo asc är default, så man kan utelämna det, om man vil.
------------------
essentitia preter non sans multiplicandum
Men om man vill hämta de fem med högst värde, men ordna dem ascending..?
------------------
/Erik
www.juhlin.nu /sk8files/ /mp2d/
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
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/
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
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
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
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/
Nej, argumentet till top måste vara en konstant.
------------------
essentitia preter non sans multiplicandum
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/