Как выбрать данные из MYSQL с LIMIT содержит один элемент со значением, например.1 - PullRequest
0 голосов
/ 18 июня 2019

У меня есть таблица с перечнем ответов на некоторые тестовые вопросы. Каждый тест получил только один правильный ответ. Как выбрать из MySQL с ограничением, например, 3 ответа с одним правильным. Ответы случайные

SELECT answer FROM answers WHERE correct='true' ORDER BY RAND() LIMIT 3

1 Ответ

1 голос
/ 18 июня 2019

Использование 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 других ответа в случайном порядке.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...