UNION ALL
gebruiken en subquery zal helpen om het verwachte resultaat te krijgen.
De volgende vraag zal in uw geval helpen:
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()
Vind de demo op db<>fiddle
In mijn demo, Answer 04
is het juiste antwoord voor de vraag id 1
, in de resultatenset, Answer 04
is altijd terug samen met 2 andere antwoorden in willekeurige volgorde.