#mysql #union
#mysql #объединение
Вопрос:
У меня есть этот запрос, он работает, но я не уверен, что это лучший подход, и я не получаю то, что хочу.
Мне нужно сначала выбрать запрос, содержащийся в предложении «IN», а затем объединить с другими. Вся возвращаемая строка должна быть 40.
SELECT *
FROM (
SELECT * FROM tbl_x a WHERE id IN(11,20,30)
UNION ALL
SELECT * FROM tbl_x b WHERE exam_group='jpx' AND subject='chemistry'
) ab
GROUP BY id LIMIT 40
Ответ №1:
Следующий запрос должен возвращать те же данные простым способом:
SELECT *
FROM tbl_x
WHERE
id IN (11,20,30)
OR (exam_group='jpx' AND subject='chemistry')
ORDER BY id IN (11,20,30) DESC, id
LIMIT 40;
Комментарии:
1. Это работает, но все еще очень похоже на мой собственный запрос. Если я установлю ОГРАНИЧЕНИЕ на 10, то он не будет получать запросы с идентификатором (11,20,30). Я просто получаю последовательный идентификатор 1-10.
2. Я отредактировал свой ответ, добавив ПОРЯДОК ПО инструкции. Смотрите упрощенный пример здесь: sqlize.online/…