Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MYSQL SELECT zufällig auf große Tabelle ORDER BY SCORE

Um so etwas zu erhalten, würde ich eine Unterabfrage verwenden. Auf diese Weise setzen Sie nur RAND() auf die äußere Abfrage, was viel weniger anstrengend ist.

Soweit ich Ihre Frage verstanden habe, möchten Sie 200 Männer aus der Tabelle mit der höchsten Punktzahl ... das wäre also etwa so:

SELECT * 
FROM table_name
WHERE age = 'male'
ORDER BY score DESC
LIMIT 200

Um jetzt 5 Ergebnisse zu randomisieren, wäre es ungefähr so.

SELECT id, score, name, age, sex
FROM
(   SELECT * 
    FROM table_name
    WHERE age = 'male'
    ORDER BY score DESC
    LIMIT 200
) t -- could also be written `AS t` or anything else you would call it
ORDER BY RAND()
LIMIT 5