6 Stimmen

MySQL: Mischen Sie ein begrenztes Abfrageergebnis?

Mögliches Duplikat:
Einfache Zufallsstichproben aus einer (My)Sql-Datenbank

Hallo!

Angenommen, ich habe eine Tabelle mit Benutzern. Ich möchte eine Abfrage, die das Ergebnis mischt und nur 5 Benutzer anzeigt. Wie mache ich das in einer MySQL-Abfrage, ohne php zu verwenden?

11voto

ajreal Punkte 45851

Sie können verwenden rand() , aber die Leistung ist schrecklich

select * from users order by rand() limit 5; <-- slow

Ich würde vorschlagen, speichern Sie die Liste aller Benutzer-ID in ein Array serialisieren und Zwischenspeicher in eine Disk-Datei. (periodisch aktualisieren)

Sie können also die Serialisierung mit PHP wieder aufheben und mit PHP array_rand um 5 zufällige Benutzer auszuwählen.

Um die vollständigen Informationen abzurufen, können Sie Folgendes tun

select * from users where user_id in(...); <-- very fast

1voto

Amjad Masad Punkte 3985
SELECT user FROM users
ORDER BY RAND()
LIMIT 5

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X