Leeres Ergebnis

Leeres Ergebnis

am 01.02.2006 13:28:41 von Alexander Mueller

Hallo,

ich versuche mit folgender Abfrage alle Einträge mit dem nächstgrößten
Wert nach dem durch RAND()*MAX(field) generierten zu ermitteln, und aus
denen dann einen Zufälligen auszuwähen.

SELECT *
FROM table
WHERE field=
(SELECT field
FROM table
WHERE field>
(select ROUND(RAND()*MAX(field))
from table)
ORDER BY field LIMIT 1)
ORDER BY RAND() LIMIT 1

Grundsätzlich scheint es auch zu funktionieren, nur wird bei jedem
dritten oder vierten Mal ein leeres Ergebnis zurückgeliefert und ich
weiß nicht wirklich warum. Besonders deswegen nicht, weil die zweite
Subquery immer einen vorhandenen Wert liefert.

SELECT field
FROM table
WHERE field>
(select ROUND(RAND()*MAX(field))
from table)
ORDER BY field LIMIT 1


Falls jemand eine Antwort hat, wäre ich dankbar.

Alexander