Non puoi usare il IN
clausola del genere. Viene compilato in un singolo stringa nel tuo IN
clausola. Ma un IN
la clausola deve essere separata valori.
WHERE id_campo not in (@idcamposexcluidos)
compila in
WHERE id_campo not in ('817,803,495')
ma dovrebbe essere
WHERE id_campo not in ('817','803','495')
Per superare questo problema, utilizzare SQL dinamico o in MySQL è possibile utilizzare TROVA_IN_SET :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0
ma usando una funzione come FIND_IN_SET()
non può utilizzare gli indici.