У меня в таблице есть столбец, который содержит строку типа 1,2,3,4,5 (то бишь implode обычного массива в php). Столбец называется mett Нужно каким-то образом выбрать только те записи, в которых есть хотя бы 1 элемент из заданного массива. Например если в таблице 1,2,3 а в массиве входных данных 2 4 6, то нужно вывести эту строку, т.к. число 2 есть в массиве. Как это сделать? Как разбить строку в массив, потом просмотреть есть ли элемент массива в заданном массиве? Нужно сформировать правильный select запрос. Типа select * from table where mett in ('1','2','3')
Массив для сравнения нужно преобразовать в набор записей. Т.е. список
в массиве входных данных 2 4 6
конвертируется в запросе в код, формирующий из этих данных таблицу:
SELECT 2 UNION ALL
SELECT 4 UNION ALL
SELECT 6
Эта таблица будет вместе с исходной источником данных запроса.
SELECT DISTINCT table.*
FROM table
, (
SELECT 2 x UNION ALL
SELECT 4 UNION ALL
SELECT 6
) x
WHERE FIND_IN_SET(x.x, table.mett)
Но в любом случае это плохое решение. Настоятельно рекомендую прислушаться к совету D-side и нормализовать данные.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости