Страницы

Поиск по вопросам

суббота, 8 февраля 2020 г.

MySQL, переделать запрос для выборки

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

Комментариев нет:

Отправить комментарий