Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como selecionar dados do MYSQL com LIMIT contém um elemento com valor, por exemplo. 1


Usando UNION ALL e subconsulta ajudará a obter o resultado esperado.

A consulta a seguir ajudará no seu 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()

Encontre demo no db<>fiddle

Na minha demonstração, Answer 04 é a resposta correta para o ID da pergunta 1 , no conjunto de resultados, Answer 04 é sempre retornado junto com 2 outras respostas na ordem aleatória.