/ Forside / Teknologi / Udvikling / SQL / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
SQL
#NavnPoint
pmbruun 1704
niller 962
fehaar 730
Interkril.. 701
ellebye 510
pawel 510
rpje 405
pete 350
gibson 320
10  smorch 260
MySQL, hent de 50 ældste
Fra : Harald


Dato : 23-01-08 19:43

Jeg bruger MySQL 4.1

Har en tabel med et datotid felt "DatoTid", jeg vil hente alle poster
sorteret i DatoTid DESC, det gør jeg sådan:

SELECT * from kunder
ORDER BY DatoTid DESC

det virker også fint men hvad nu hvis jeg vil have en limit på 50 men det
skal være de 50 ældste og stadig sorteres i DESC?

/HK



 
 
Nikolaj Svendsen (23-01-2008)
Kommentar
Fra : Nikolaj Svendsen


Dato : 23-01-08 19:45

Limit 50

"Harald" <noname@nomail.dk> skrev i en meddelelse
news:47978ad1$0$90265$14726298@news.sunsite.dk...
> Jeg bruger MySQL 4.1
>
> Har en tabel med et datotid felt "DatoTid", jeg vil hente alle poster
> sorteret i DatoTid DESC, det gør jeg sådan:
>
> SELECT * from kunder
> ORDER BY DatoTid DESC
>
> det virker også fint men hvad nu hvis jeg vil have en limit på 50 men det
> skal være de 50 ældste og stadig sorteres i DESC?
>
> /HK
>
>



Nikolaj Svendsen (23-01-2008)
Kommentar
Fra : Nikolaj Svendsen


Dato : 23-01-08 19:45


"Nikolaj Svendsen" <nes@logtech.dk> skrev i en meddelelse
news:47978b17$0$15010$ba624c82@nntp02.dk.telia.net...
> Limit 50
>
> "Harald" <noname@nomail.dk> skrev i en meddelelse
> news:47978ad1$0$90265$14726298@news.sunsite.dk...
>> Jeg bruger MySQL 4.1
>>
>> Har en tabel med et datotid felt "DatoTid", jeg vil hente alle poster
>> sorteret i DatoTid DESC, det gør jeg sådan:
>>
>> SELECT * from kunder
>> ORDER BY DatoTid DESC
>>
>> det virker også fint men hvad nu hvis jeg vil have en limit på 50 men det
>> skal være de 50 ældste og stadig sorteres i DESC?
>>
>> /HK
>>
>>
>
>

Eller mere præcis

SELECT * from kunder
ORDER BY DatoTid DESC LIMIT 50



Harald (23-01-2008)
Kommentar
Fra : Harald


Dato : 23-01-08 19:55

"Nikolaj Svendsen" <nes@logtech.dk> skrev i en meddelelse
news:47978b38$0$15007$ba624c82@nntp02.dk.telia.net...
>
> "Nikolaj Svendsen" <nes@logtech.dk> skrev i en meddelelse
> news:47978b17$0$15010$ba624c82@nntp02.dk.telia.net...
>> Limit 50
>>
>> "Harald" <noname@nomail.dk> skrev i en meddelelse
>> news:47978ad1$0$90265$14726298@news.sunsite.dk...
>>> Jeg bruger MySQL 4.1
>>>
>>> Har en tabel med et datotid felt "DatoTid", jeg vil hente alle poster
>>> sorteret i DatoTid DESC, det gør jeg sådan:
>>>
>>> SELECT * from kunder
>>> ORDER BY DatoTid DESC
>>>
>>> det virker også fint men hvad nu hvis jeg vil have en limit på 50 men
>>> det skal være de 50 ældste og stadig sorteres i DESC?
>>>
>>> /HK
>>>
>>
>
> Eller mere præcis
>
> SELECT * from kunder
> ORDER BY DatoTid DESC LIMIT 50

Det giver mig de 50 nyeste, det jeg vil have er de 50 ældste.

/HK



Peter Brodersen (23-01-2008)
Kommentar
Fra : Peter Brodersen


Dato : 23-01-08 21:44

On Wed, 23 Jan 2008 19:43:27 +0100, "Harald" <noname@nomail.dk> wrote:

>SELECT * from kunder
>ORDER BY DatoTid DESC
>
>det virker også fint men hvad nu hvis jeg vil have en limit på 50 men det
>skal være de 50 ældste og stadig sorteres i DESC?

ORDER BY DatoTid LIMIT 50

Evt. explicit stigende:

ORDER BY DatoTid ASC LIMIT 50

Men de to udtryk er identiske.

--
- Peter Brodersen
Kendt fra Internet

Harald (23-01-2008)
Kommentar
Fra : Harald


Dato : 23-01-08 22:03

"Peter Brodersen" <usenet2007@ter.dk> skrev i en meddelelse
news:4797a71b$0$90265$14726298@news.sunsite.dk...
> On Wed, 23 Jan 2008 19:43:27 +0100, "Harald" <noname@nomail.dk> wrote:
>
>>SELECT * from kunder
>>ORDER BY DatoTid DESC
>>
>>det virker også fint men hvad nu hvis jeg vil have en limit på 50 men det
>>skal være de 50 ældste og stadig sorteres i DESC?
>
> ORDER BY DatoTid LIMIT 50
>
> Evt. explicit stigende:
>
> ORDER BY DatoTid ASC LIMIT 50
>
> Men de to udtryk er identiske.

Det jeg vil have er de 50 ældste sorteret så den nyeste af de 50 kommer
først.

Dvs. hvis jeg f.eks. har datoer fra 1-70 hvor 70 er den nyeste så skal
resultatet blive:

50
49
48
47
..
..
1

/HK



Leonard (23-01-2008)
Kommentar
Fra : Leonard


Dato : 23-01-08 22:10

On Wed, 23 Jan 2008 22:02:52 +0100, Harald wrote:

> Dvs. hvis jeg f.eks. har datoer fra 1-70 hvor 70 er den nyeste så skal
> resultatet blive:

Jeg er ikke en haj til MySQL, men kunne dette virke:

SELECT felter, COUNT AS total FROM tabel ORDER BY felt DESC LIMIT
total-50, 50

--
Leonard
King Hauler sælges: http://leonard.dk/tilsalg/kh.php

Harald (23-01-2008)
Kommentar
Fra : Harald


Dato : 23-01-08 23:18

"Leonard" <piper28a@gmail.invalid> skrev i en meddelelse
news:a2x7mvyuega2.1w1jrluqg1ph7.dlg@40tude.net...
> On Wed, 23 Jan 2008 22:02:52 +0100, Harald wrote:
>
>> Dvs. hvis jeg f.eks. har datoer fra 1-70 hvor 70 er den nyeste så skal
>> resultatet blive:
>
> Jeg er ikke en haj til MySQL, men kunne dette virke:
>
> SELECT felter, COUNT AS total FROM tabel ORDER BY felt DESC LIMIT
> total-50, 50

Det gør det ikke:

ERROR 1064: You have an error in your SQL syntax. Check the manual that
corresponds to your MySQL server version for the right syntax to use near
'total -50, 50' at line 1

/HK



Peter Brodersen (23-01-2008)
Kommentar
Fra : Peter Brodersen


Dato : 23-01-08 22:32

On Wed, 23 Jan 2008 22:02:52 +0100, "Harald" <noname@nomail.dk> wrote:

>Det jeg vil have er de 50 ældste sorteret så den nyeste af de 50 kommer
>først.

ORDER kommer før LIMIT, men du kan evt. hente de 50 ældste først i en
subselect, og så sortere det resultat efterfølgende:

SELECT * FROM (SELECT * FROM kunder ORDER BY DatoTid ASC LIMIT 50) a
ORDER BY DatoTid DESC

Det kræver min. MySQL 4.1.

--
- Peter Brodersen
Kendt fra Internet

Harald (23-01-2008)
Kommentar
Fra : Harald


Dato : 23-01-08 23:23

"Peter Brodersen" <usenet2007@ter.dk> skrev i en meddelelse
news:4797b263$0$90269$14726298@news.sunsite.dk...
> On Wed, 23 Jan 2008 22:02:52 +0100, "Harald" <noname@nomail.dk> wrote:
>
>>Det jeg vil have er de 50 ældste sorteret så den nyeste af de 50 kommer
>>først.
>
> ORDER kommer før LIMIT, men du kan evt. hente de 50 ældste først i en
> subselect, og så sortere det resultat efterfølgende:
>
> SELECT * FROM (SELECT * FROM kunder ORDER BY DatoTid ASC LIMIT 50) a
> ORDER BY DatoTid DESC
>
> Det kræver min. MySQL 4.1.

Beklager jeg huskede forkert det er 4.0.26 jeg benytter så ingen subselects.

Men hvis det ikke kan lade sig gøre så kan jeg altid lave det i programmet.

/HK



Thorbjørn Ravn Ander~ (23-01-2008)
Kommentar
Fra : Thorbjørn Ravn Ander~


Dato : 23-01-08 22:28

"Harald" <noname@nomail.dk> writes:

>>>SELECT * from kunder
>>>ORDER BY DatoTid DESC
>>>
>>>det virker også fint men hvad nu hvis jeg vil have en limit på 50 men det
>>>skal være de 50 ældste og stadig sorteres i DESC?

Undersøg om din MySQL understøtter subselects.
--
Thorbjørn Ravn Andersen

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409071
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste