Не можете да използвате IN
клауза такава. Той се компилира в единично низ във вашия IN
клауза. Но IN
клаузата се нуждае от отделно стойности.
WHERE id_campo not in (@idcamposexcluidos)
компилира в
WHERE id_campo not in ('817,803,495')
но трябва да е
WHERE id_campo not in ('817','803','495')
За да преодолеете това, използвайте динамичен SQL или в MySQL можете да използвате FIND_IN_SET :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
но използвайки функция като FIND_IN_SET()
не може да използва индекси.