Sử dụng UNION ALL
và truy vấn phụ sẽ giúp bạn có được kết quả như mong đợi.
Truy vấn sau sẽ hữu ích trong trường hợp của bạn:
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()
Vui lòng tìm bản trình diễn trên db <> fiddle
Trong bản demo của tôi, Answer 04
là câu trả lời đúng cho id câu hỏi 1
, trong tập kết quả, Answer 04
luôn trả về cùng với 2 câu trả lời khác theo thứ tự ngẫu nhiên.