Невозможно найти один номер и строку через запятую в одном запросе - PullRequest
0 голосов
/ 26 мая 2019

Я пытаюсь выполнить поиск по конкретному сценарию за последние 8 часов, но не могу его разобрать.

Мне нужно получить записи из одной таблицы, где мне нужно сопоставить строку, разделенную запятыми, с двумя столбцами.

-В обоих столбцах содержатся отдельные значения, такие как 1, или значения, разделенные запятыми, например, 1,2,3

. Мне нужно получить записи, в которых как минимум одно условие AND соответствует обоим столбцам для одного значения или запятой.разделенное значение.

Вот мой запрос

SELECT specialities, ids_origin, id, latitude, longitude 
FROM `ep_restaurant` 
where `specialities` in (2,4,5,32) and `ids_origin` in (106,154,3)

Запись извлекается

http://prntscr.com/ntiao7

Но она совпадает, если оба столбца имеют одинаковыевесь набор значений, разделенных запятыми, мне также нужно получить все те, в которых даже одинаковые значения из обоих столбцов совпадают, например, 2,6 или 2,154, или целые строки, разделенные запятыми, например (2,4,5,32) и (106,154,3)совпало ..

Это не моя собственная база данных, поэтому я не могу ее изменить.Пожалуйста, помогите мне. Спасибо.

1 Ответ

0 голосов
/ 26 мая 2019

MySQL имеет полезную функцию для такого случая, который необходимо избегать.

Например, если у вас есть specialities таблица:

SELECT r.id, latitude, longitude, r.specialities
  FROM ep_restaurant r
  WHERE exists( SELECT 1 
                  FROM specialities s 
                  WHERE find_in_set(s.id, r.specialities)
                    AND s.id in(2,6)
              )
     OR exists( SELECT 1 
                  FROM <Origins Table> o 
                  WHERE find_in_set(o.<Column Id>, r.ids_origin)
                    AND o.<Column Id> in(106,154)
              )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...