Можно ли в MySQL выбрать записи через сравнение массивов id?
Здравствуйте.
У меня в таблице есть поле для чисел через запятую, например, 1,2,3 (отображение дней недели).
Оператор "IN" делает выборку по совпадению с первой цифры.
Например, если указать "IN (1,2)", то выберет поля, начинающиеся с 1 (единицы) SELECT * FROM objects WHERE week_day IN (1,2);
А если указать "IN (2,3)" (начинается не с единицы), то выдаст ошибку, хотя совпадают 2 и 3. SELECT * FROM objects WHERE week_day IN (2,3);
Был бы благодарен за подсказку, как решить эту проблему и делать выборку по совпадению любых цифр.
Спасибо. А Вы не в курсе, будет ли поиск быстрее, если я задам полю "week_day" тип "SET" с перечисленным от 1 до 7 вариантами для значений?
Или VARCHAR тоже сойдет?
Да, будет: If the first argument is a constant string and the second is a column of type SET, the FIND_IN_SET() function is optimized to use bit arithmetic. (это цитата из описания функции). К тому же, описание поле будет ограничителем, чтобы не было возможностить пихать в него, что попало.