Du kan inte använda IN
sådan klausul. Den kompileras till en singel sträng i din IN
klausul. Men en IN
klausul måste separeras värden.
WHERE id_campo not in (@idcamposexcluidos)
kompilerar till
WHERE id_campo not in ('817,803,495')
men det borde vara
WHERE id_campo not in ('817','803','495')
För att övervinna detta använd antingen dynamisk SQL eller i MySQL kan du använda FIND_IN_SET :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
men med en funktion som FIND_IN_SET()
kan inte använda index.