#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) По номеру объединять не стоит... Даты перечислять - больше работы для БД
Комментариев нет:
Отправить комментарий