MySQL error "This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Rudie dirkx

rudie dirkx

14/06/2008 10:27:00
Quote Anchor link
Hoe los ik de volgende query op zodat het wel werkt:
SELECT * FROM logs WHERE id IN (SELECT id FROM logs ORDER BY utc DESC LIMIT 100) ORDER BY ip ASC;

Voor de duidelijkheid: ik wil de 100 nieuwste logs, maar niet perse in de volgorde van nieuwheid. Ik dacht het zo te doen: Alle logs opvragen met de 100 nieuwste ID's. Dan kan ik daarna desnoods nog ORDER en LIMIT toevoegen.

De error:
This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

Ik draai MySQL 5.0.27-community-nt, niet echt een heel oude versie dus...

Weet iemand hoe het wel kan in 1 query?
Dank
 
PHP hulp

PHP hulp

22/11/2024 10:58:42
 
Martijn B

Martijn B

14/06/2008 10:39:00
Quote Anchor link
Je kunt dus geen LIMIT gebruiken in een subquery.


SELECT *
FROM logs
ORDER BY utc DESC
LIMIT 100
 
Rudie dirkx

rudie dirkx

14/06/2008 10:43:00
Quote Anchor link
Ok, jij hebt dus niet opgelet. Zoals ik al zei: ik wil niet perse orderen op utc/nieuwheid, dus het moet wel iets met een subquery zijn. Het kan niet in 1x, zoals jij doet, want dan sorteer je OF alleen op utc, OF je krijgt de verkeerde 100 results.
 
Frank -

Frank -

14/06/2008 10:53:00
Quote Anchor link
Zie deze tut hoe je een LIMIT in een subquery kunt gebruiken in MySQL.

Een betere/completere database gebruiken is natuurlijk ook altijd een mogelijkheid.
 
Rudie dirkx

rudie dirkx

14/06/2008 11:15:00
Quote Anchor link
Quote:
Een betere/completere database gebruiken is natuurlijk ook altijd een mogelijkheid.

Enlighten me. Ik heb 1 tabel: logs, met velden: id, user_id, utc, log. Het is een MyISAM tabel, dus geen relaties. Helemaal standalone.
Hoe kan het beter en wat is dan de oplossing?Ik ga je tut bekijken
 
Frank -

Frank -

14/06/2008 12:54:00
Quote Anchor link
Ach, MySQL wil nog wel eens tabellen naar de bliksem helpen, ga bv. maar eens een tabel optimalizeren wanneer je vrijwel geen schijfruimte meer hebt... Weg data, foetsie, verdwenen, zo het bit-riool in.

Daarnaast mist zoiets simpels als een LIMIT in een subquery in MySQL, dat is toch echt niets bijzonders, maar het ontbreekt dus wel.

Daarnaast ontbreekt er nog wel meer, maar veel prutsers programmeurs vinden het normaal om zelf het wiel nogmaals uit te vinden en constant het risico te lopen om hun data kwijt te raken. Tja, MySQL, ga niet klagen wanneer basic database functionaliteit ontbreekt of je data corupt is, dat hoort er bij.
 
Rudie dirkx

rudie dirkx

14/06/2008 23:10:00
Quote Anchor link
De oplossing is verbazend makkelijk:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
SELECT
  *
FROM
  (SELECT * FROM logs ORDER BY utc DESC LIMIT 100)
ORDER BY $1 $2;
Waar $1 en $2 dus resp. het veld en de volgorde (asc/desc) zijn. Variabelen.
 
Robert Deiman

Robert Deiman

15/06/2008 03:06:00
Quote Anchor link
@ALL

Ik weet van MySQL 5 dat die wel veel ondersteunt aan subquery's maar dat je wel een AS (alias) mee moet geven aan een subquery, die je vervolgens weer gebruikt in de daarom liggende query.
Dat soort dingen op een goede manier opbouwen wil ook wel eens helpen.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.