Avatar billede razmuz_dk Nybegynder
31. oktober 2005 - 16:03 Der er 8 kommentarer og
1 løsning

Limit -5 ?

Med LIMIT 5 selecter man de første 5 i et antal records. Jeg søger en måde hvorpå man selecter de SIDSTE 5. Jeg vil helst undgå at "vende" ASC til DESC, fordi jeg skal bruge dem i "ascending" rækkefølge. Jeg har forsøgt med LIMIT -5 men det giver blot fejl.

Hvis i ikke forstår hvad jeg mener illustrerer dette eksempel det jeg ønsker:

Tal
1
2
3
4
5
6
7


Mit udtræk skal fange fx

3,4,5,6,7 .. det er også nemt med ORDER BY x DESC LIMIT 5 - men så får jeg 7,6,5,4,3 - jeg skal have dem i ascending rækkefølge - nemlig 3,4,5,6,7.

Håber i forstår.

- Rasmus
Avatar billede jaw Nybegynder
31. oktober 2005 - 16:15 #1
Måske:

SELECT tal FROM tabel WHERE tal IN(SELECT tal FROM tabel ORDER BY tal DESC LIMIT 5) ORDER BY tal ASC
Avatar billede razmuz_dk Nybegynder
31. oktober 2005 - 16:19 #2
.. "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'"

Jeg kører MySQL 4.1.13. Er MySQL 5 løsningen?
Avatar billede jaw Nybegynder
31. oktober 2005 - 16:22 #3
MySQL 5.0 supports all subquery forms and operations that the SQL standard requires, as well as a few features that are MySQL-specific.

Tilsyneladende ja :)
Avatar billede plx Nybegynder
31. oktober 2005 - 16:26 #4
Du kunne trække værdierne ud i et array, og efterfølgende arbejde med arrayet fra bunden  og op
Avatar billede razmuz_dk Nybegynder
31. oktober 2005 - 16:27 #5
Okay. Jeg er dog ikke helt tilfreds med løsningen eftersom jeg tror din løsning er betydeligt tungere end mit andet alternativ: At bruge ASC i stedet og så "vende" resultatet med noget PHP-kode.

Men tak for svaret - det er sikkert rigtigt nok.. så smid da et svar :)
Avatar billede razmuz_dk Nybegynder
31. oktober 2005 - 16:28 #6
plx -> Jeps som nævnt ovenfor bliver det, det jeg gør. Havde bare håbet på at der fandtes en hurtig og nem måde til det i MySQL. I følge en af mine MySQL-guru-venner, så kunne man vidst nok bruges LIMIT -X i "gamle dage"... :)
Avatar billede jaw Nybegynder
31. oktober 2005 - 16:29 #7
Jeg er nu ikke helt enig i at det skulle være tungere, men det kan jeg ikke garantere. Og det er også muligt at der er en anden måde at gøre det på, så du kan da lade det stå åbent lidt endnu hvis du vil?!
Avatar billede razmuz_dk Nybegynder
31. oktober 2005 - 16:38 #8
Ja det har du ret i. JEg tror det er tungere fordi du med IN() laver to ORDER BY - det kan godt være tungt når man tænker over jeg har mange tusinde records i tabellen?
Avatar billede razmuz_dk Nybegynder
07. december 2005 - 09:32 #9
Lukker - tak for hjælpen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester