Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Formato de variável MySQL para uma lista de valores NOT IN


Você não pode usar o IN cláusula assim. Ele compila para um único string em seu IN cláusula. Mas um IN cláusula precisa separar valores.
WHERE id_campo not in (@idcamposexcluidos)

compila para
WHERE id_campo not in ('817,803,495')

mas deve ser
WHERE id_campo not in ('817','803','495')

Para superar isso, use SQL dinâmico ou no MySQL, você pode usar FIND_IN_SET :
SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

mas usando uma função como FIND_IN_SET() não pode fazer uso de índices.