Utilisation de UNION ALL
et la sous-requête vous aidera à obtenir le résultat attendu.
La requête suivante vous aidera dans votre cas :
SELECT Answer FROM (
SELECT * FROM (
SELECT Answer, 1 AS ManualOrder FROM Answers WHERE Correct = 'true' AND QId = 1
UNION ALL
SELECT Answer, RAND() FROM Answers WHERE Correct != 'true' AND QId = 1
) AS Q
ORDER BY ManualOrder DESC LIMIT 3
) W ORDER BY RAND()
Veuillez trouver démo sur db<>fiddle
Dans ma démo, Answer 04
est la bonne réponse pour l'identifiant de question 1
, dans le jeu de résultats, Answer 04
est toujours renvoyé avec 2 autres réponses dans l'ordre aléatoire.