Es kann vorkommen, dass Sie eine MySQL-Ergebnismenge nach dem Zufallsprinzip anordnen müssen, z. B. wenn Sie bei einer Verlosung einige Gewinner zufällig auswählen. In diesem Beitrag wird beschrieben, wie Sie dies tun können, und der nächste MySQL-Beitrag wird sich mit der “zufälligen” Anordnung von Daten über mehrere Seiten hinweg befassen.
Angenommen, wir führen eine Umfrage durch und wollen 10 Personen, die die Umfrage ausgefüllt haben, einen Preis geben. Diese Personen sollen nach dem Zufallsprinzip ausgewählt werden.
Um 10 Datensätze in zufälliger Reihenfolge aus der Tabelle auszuwählen, gehen Sie wie folgt vor:
SELECT first_name, last_name, email_address, phoneFROM surveyORDER BY RAND()LIMIT 10
Die Zeile ORDER BY RAND() macht die Ergebnismenge zufällig, und die Zeile LIMIT 10 gibt nur die ersten 10 Ergebnisse zurück.
Eine Ergebnismenge auf diese Weise nach dem Zufallsprinzip zu ordnen, ist ineffizient und wird bei großen Ergebnismengen langsam, da die Zufallszahl auf jede Zeile angewendet werden muss, bevor sie sortiert wird. Für die Wahl eines Gewinners oder ähnliche Zwecke ist es großartig, aber es ist nicht sehr nützlich, wenn Sie “zufällige” Ergebnisse über mehrere Seiten ausgeben müssen.
Wenn Sie Daten “zufällig” ausgeben müssen, ist die Verwendung von RAND() nicht sehr nützlich, da dieselben Datensätze auf mehreren Seiten erscheinen und Sie keinen konsistenten Datensatz erhalten, wenn Sie dieselben Seiten vor- und zurückblättern. Wie das geht, werde ich im MySQL-Beitrag der nächsten Woche erläutern. Abonnieren Sie meinen RSS-Feed (Details unten), damit Sie nichts verpassen.