Mysql
 sql >> Database >  >> RDS >> Mysql

MYSQL SELECT casuale su grande tabella ORDINE PER PUNTEGGIO

quindi per ottenere qualcosa del genere userei una sottoquery .. in questo modo stai solo inserendo RAND() sulla query esterna che sarà molto meno faticosa.

Da quello che ho capito dalla tua domanda vuoi 200 maschi dalla tabella con il punteggio più alto... quindi sarebbe qualcosa del genere:

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

ora per randomizzare 5 risultati sarebbe qualcosa del genere.

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