Sub-SELECT mit LIMIT

Napofis

require 'brain.php';
Hallo :)

ich hab da eine kleine Frage.
Für eine kleine Ansicht wollte ich auf der Startseite per zufall (RAND())
3 einträge auswählen aller dings nur von den letzten 30 einträgen.

Ich hab folgenden befehl verwendet

Code:
SELECT * FROM table WHERE public='1' && id IN (SELECT id FROM table ORDER BY id DESC LIMIT 30) ORDER BY RAND() LIMIT 3

Wenn ich das Ausführe kommt die Fehlermeldung das die Mysqlversion das noch nicht unterstützt.
Ich hab mich da auch mal versucht etwas schlau zu machen und rausgefunden das das nur bei Versionen <= 4.x so ist, ich verwende aber 5.0
Lieg der Fehler jetzt bei mir?

Und wie kann ich das am besten umschreiben das es Funktioniert?
ohne eine 2 Abfrage zu machen.

Gruß Napofis :)
 
Auch MySQL5 macht damit noch Probleme, aber es gibt einen kleinen Workaround, in dem man noch ein verschachteltes Query macht und dieses als virtuelle Tabelle erstellt.

SQL:
SELECT * 
FROM table 
WHERE public='1' && id IN (
    SELECT * FROM (
        SELECT id FROM table ORDER BY id DESC LIMIT 30
    ) AS virtualTable )
    ORDER BY RAND() LIMIT 3

Versuch es mal so.
 
Zuletzt bearbeitet:
Zurück