Переменная @VAR2
является скалярной переменной и не может хранить набор результатов.Для этого вам потребуется табличная переменная, которую MySQL не поддерживает напрямую (обратите внимание, что другие базы данных, такие как SQL Server, поддерживают их).
Но вы можете встроить подзапрос, и он должен работать:
SET @VAR1 = "STRING1,STRING2,STRING3,STRING4";
UPDATE tbl_A
SET idaccount = 2
WHERE id IN (SELECT id FROM (
SELECT id FROM tbl_A
WHERE FIND_IN_SET(description, @VAR1) AND fieldtype = ''
)x );
Обратите внимание, что подзапрос, следующий за предложением IN
обновления, переносится дважды, чтобы избежать проблемы обращения к той же таблице, которая обновляется.Этот трюк фактически материализует подзапрос, оставляя его независимым от того, что происходит во время обновления.