Usando UNION ALL
e sub query ti aiuteranno a ottenere il risultato atteso.
La seguente domanda ti aiuterà nel tuo caso:
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()
Trova demo su db<>violino
Nella mia demo, Answer 04
è la risposta corretta per l'ID domanda 1
, nel set di risultati, Answer 04
è sempre restituito insieme ad altre 2 risposte in ordine casuale.