#mysql #sql
Есть массив, вида [ {date: '2015-05-01', number: 1}, {date: '2015-05-01', number: 2}, {date: '2015-05-03', number: 1}, ] Как можно составить запрос для MySQL, что бы вернуть данные по совпадению date AND number в этом массиве. То есть для таких данных будет запрос: SELECT * FROM TABLE WHERE (date='2015-05-01' AND number=1) OR (date='2015-05-01' AND number=2) OR (date='2015-05-03' AND number=1) Но, может есть более простой/компактный/красивей вариант?
Ответы
Ответ 1
Вы можете использовать конструкцию in вот так: SELECT * FROM TABLE WHERE (date, number) in (('2015-05-01', 1), ('2015-05-01', 2), ('2015-05-03', 1)) Sql Fiddle примерОтвет 2
Ну только если объединить схожие значения... SELECT * FROM TABLE WHERE (date='2015-05-01' AND number IN (1, 2)) OR (date='2015-05-03' AND number=1) По номеру объединять не стоит... Даты перечислять - больше работы для БД
Комментариев нет:
Отправить комментарий