November 5th, 2007 by Bert
Dit is de manier om een random record te nemen uit een table in MySQL.
select * from banners order by rand() limit 1
Update: Het voorstel van Frank in de reacties is veel beter.
mysql, random, record
This entry was posted
on Monday, November 5th, 2007 at 11:11 and is filed under SQL.
You can follow any responses to this entry through the RSS 2.0 feed.
You can leave a response, or trackback from your own site.
November 5th, 2007 at 18:24
In een MSSQL database doe je dat als volgt “.. order by NEWID()”
November 6th, 2007 at 14:57
Denk er wel aan dat dit een gigantische performance killer is als je tabel groot is! Vaak ben je dan beter om select een_of_andere_key_van_die_tabel from banners te doen (dit is een select van een index, dus gaat snel) en je array te randomizen in je applicatie, en dan dat record te selecteren.
November 8th, 2007 at 14:17
Dat zit native in de database engine om random te sorteren. Is dus volgens mij het snelste wat je kan hebben hoor ..
November 13th, 2007 at 13:27
Het voorstel van frank is dus veel beter.
January 24th, 2008 at 18:17
Inderdaad rand() is niet echt snel op grote datasets (ook afhankelijk van je database uiteraard). Een lelijke, maar wel betere oplossing is de volgende :
SELECT * FROM Table T JOIN (SELECT FLOOR(MAX(ID)*RAND()) AS ID FROM Table) AS x ON T.ID >= x.ID LIMIT 1;