Wie kann ich in reinem SQL eine zufällige Zeile anfordern (oder eine, die dem echten Zufall so nahe wie möglich kommt)?
Antworten
Zu viele Anzeigen?
Sophy
Punkte
7895
Damit MySQL einen zufälligen Datensatz erhält
SELECT name
FROM random AS r1 JOIN
(SELECT (RAND() *
(SELECT MAX(id)
FROM random)) AS id)
AS r2
WHERE r1.id >= r2.id
ORDER BY r1.id ASC
LIMIT 1
Mehr Details http://jan.kneschke.de/projects/mysql/order-by-rand/
Jai - gotaninterviewcall
Punkte
11
David Knight
Punkte
755
Luigi04
Punkte
429
Chris Arbogast
Punkte
103
In SQL Server können Sie TABLESAMPLE mit NEWID() kombinieren, um eine ziemlich gute Zufälligkeit zu erhalten und trotzdem schnell zu sein. Dies ist besonders nützlich, wenn Sie wirklich nur 1 oder eine kleine Anzahl von Zeilen benötigen.
SELECT TOP 1 * FROM [table]
TABLESAMPLE (500 ROWS)
ORDER BY NEWID()