Ошибка исходит от вашего первоначального назначения. Вы не можете назначать списки переменным.
Единственный способ сделать это в MySQL - это либо создать временную таблицу для хранения значений, а затем выполнить ... IN (SELECT someVal FROM thatTemp)
, либо динамически создать запрос со значениями непосредственно в строке запроса.
Пример создания временной таблицы:
CREATE TEMPORARY TABLE `someTemp` ( someVal VARCHAR(16) );
INSERT INTO `someTemp` (someVal) VALUES ('a'), ('b'), ('c');
SELECT * FROM myTable WHERE myField IN (SELECT someVal FROM someTemp);
DELETE TEMPORARY TABLE `someTemp`;
Кроме того, есть также FIND_IN_SET , который можно использовать следующим образом:
SET @list = 'a,b,c';
SELECT * FROM myTable WHERE FIND_IN_SET(myField, @list) <> 0;
но этот метод, вероятно, имеет крайне низкую производительность (и может быть неприменим, если ваши значения "myField" могут содержать запятые).