В качестве примера я это как поле в колонке:Запрашивание несколько значений на разделенных запятой поля
3,21,23,41,47,56,57,61,64,74,78 , 79,82,83,86,90,94
Эти идентификаторы, и я пытаюсь выяснить, как я могу найти несколько номеров, которые я пробовал, например:
SELECT * FROM table WHERE status='A' AND (FIND_IN_SET('3,64', myids))
Кажется, что это работает, только если 3 и 64 были вместе и выводят find_in _set для каждого значения может быть немного больно.
Любые лучшие решения или предложения?
Вы должны серьезно подумать о том, чтобы адаптировать структуру вашей таблицы - запрос такого типа данных в СУБД представляет собой PITA. Вместо этого лучше используйте таблицу подробностей - намного чище, проще запросить/удалить/обновить/вставить отдельные записи и т. Д. –
К сожалению, я работаю с базой данных, которая уже существует (иначе я бы сделал это по-другому :(). – user1264969
В этом Я бы выбрал регулярные выражения - вы не можете использовать простой поиск подстроки, так как поиск «3» также найдет «23» и т. д. Что-то вроде ... WHERE myids rlike ('(^ |,) 3 (, | $) ') и myids rlike (' (^ |,) 64 (, | $) '), который соответствует началу строки или a, за которой следует ваш номер, за которым следует конец строки или запятая (не 100 % just about синтаксис regex MySQL, хотя) –