|
| 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
| |
|
|