Задать вопрос
@wwspb

Можно ли использовать WHERE IN в запросах MySQL с набором полей?

Нужно выбрать все записи из таблицы по значению 2-х полей, входящих в определенный набор значений.

Можно ли использовать WHERE IN подобным образом:

SELECT *
FROM table
WHERE (id, name) IN ((value11, value12), (value21, value22), (value31, value32))

Ни в каких доках на подобное описание данного условного оператора не наткнулся. MySQL запросы выполнят, но вот Doctrine ругается на такое использование, что вызвало кучу сомнений по поводу валидности таких запросов.
Подскажите, являются ли правильными такие запросы? Может кто сталкивался с описанием подобного использования?
  • Вопрос задан
  • 748 просмотров
Подписаться 1 Оценить Комментировать
Помогут разобраться в теме Все курсы
  • Stepik
    PRO C#. Базы данных
    2 месяца
    Далее
  • Академия Эдюсон
    Python-разработчик + ИИ
    9 месяцев
    Далее
  • ProductStar × РБК
    Профессия: Java-разработчик + ИИ
    9 месяцев
    Далее
Пригласить эксперта
Ответы на вопрос 2
@d-stream
Готовые решения - не подаю, но...
Не проще ли сделать left join ?
Ответ написан
@Draconian
Oracle Developer
По-моему, это не корректный запрос, согласно стандарта SQL.
Почему бы id и name не фильтровать отдельно?
Т.е.:
SELECT * 
FROM table
WHERE id in (...) AND name in (...);

В чем у вас необходимость именно такие пары использовать?
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы