[MySQL] Zufällig einen oder mehrere Datensätze auswählen

theHacker

sieht vor lauter Ads den Content nicht mehr
Teammitglied
ID: 69505
L
20 April 2006
22.682
1.315
Oft kommt es vor, dass man keinen bestimmten, sondern einen zufälligauswählen möchte. z.B. Auswählen eines Werbebanners, User of the day, ...

Hierzu gibt es die MySQL-Funktion RAND().
Infos hier: https://dev.mysql.com/doc/mysql/en/Mathematical_functions.html

Beispiele:
Auswählen eines zufälligen Werbebanners
Code:
SELECT bannerurl, bannercode FROM werbebanner ORDER BY RAND() LIMIT 1
Auswählen von 10 Usern, die 50 oder mehr Posts im Forum haben
Code:
SELECT userid, username FROM users WHERE posts>=50 ORDER BY RAND() LIMIT 10
Man kann zusätzlich noch ein Argument in die Klammer setzen, wie man es von PHP mit srand() bzw. mt_srand() gewohnt ist:
Code:
  SELECT something FROM somewhere ORDER BY RAND(UNIX_TIMESTAMP()*UNIX_TIMESTAMP()) LIMIT 1
Einen Zufälligen Banner aus der Tabelle 'Banner' der nicht in 'Visited' steht
Code:
 SELECT Banner.id FROM Banner LEFT JOIN Visited USING (id) WHERE Visited.id IS NULL ORDER BY RAND()