Использование UNION ALL
и подзапроса поможет получить ожидаемый результат.
В вашем случае поможет следующий запрос:
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()
Найдите demo on db <> fiddle
В моей демонстрации Answer 04
является правильным ответом на вопрос с идентификатором 1
, в наборе результатов Answer 04
всегда возвращается вместе с2 других ответа в случайном порядке.