SELECT *
FROM `choises`
WHERE questionid = :qid
ORDER BY correct DESC, RAND()
LIMIT 5
Assumendo correct
è una specie di int. Altrimenti potresti dover cambiare DESC
a ASC
.
Puoi "mescolare" i 5 risultati usando un altro ORDER BY RAND()
così:
SELECT * FROM (
SELECT *
FROM `choises`
WHERE questionid = :qid
ORDER BY correct DESC, RAND()
LIMIT 5
) as t
ORDER BY RAND()