WHERE IN () не работает как надо
Код:
SET @suf:=0;
SET @nums:='1,2,3';
UPDATE `table` SET `col` = concat(`col`, ' (', @suf:=@suf+1,')') WHERE `cf_vendlistid` IN (@nums);
SET @nums:='1,2,3';
UPDATE `table` SET `col` = concat(`col`, ' (', @suf:=@suf+1,')') WHERE `cf_vendlistid` IN (@nums);
Код:
SET @suf:=0;
UPDATE `table` SET `col` = concat(`col`, ' (', @suf:=@suf+1,')') WHERE `cf_vendlistid` IN (1,2,3);
UPDATE `table` SET `col` = concat(`col`, ' (', @suf:=@suf+1,')') WHERE `cf_vendlistid` IN (1,2,3);
1,
4,6
8,
13,14,17
...
Код:
SET @suf:=0;
SET @nums:='1,2,3';
SET @nums:='1,2,3';
mysql 5.5, точно!
SET - это строковый тип, который может принимать ноль или более значений, каждое из которых должно быть выбрано из списка допустимых значений, определенных при создании таблицы. Элементы множества SET разделяются запятыми. Как следствие, сами элементы множества не могут содержать запятых.
Например, столбец, определенный как SET("один", "два") NOT NULL может принимать такие значения:"
а у вас
Код:
SET @nums:='1,2,3';
"Спасибо" русскоговорящим "зкспертам". И спасибо моему знанию английского.
И да, вопрос можно закрыть и удалить, ибо всё равно не решен.
Цитата: Kuzya
а у вас
Код:
SET @nums:='1,2,3';
тут я ошибся, значение в переменной будет строковым, а не числовым массивом
решение:
create table `nums` ( `id` integer unsigned );
insert into `nums` ( `id` ) values (1),(2),(3);
UPDATE `table` SET `col` = concat(`col`, ' (', @suf:=@suf+1,')') WHERE `cf_vendlistid` IN (select `id` from `nums`);
а вот эта хрень >> SET @nums:='1,2,3'; << работать не будет.