sql >> Base de Datos >  >> RDS >> Mysql

Formato de variable MySQL para una lista de valores NOT IN

No puedes usar el IN cláusula como esa. Se compila en un único cadena en su IN cláusula. Pero un IN la cláusula necesita separar valores.

WHERE id_campo not in (@idcamposexcluidos)

compila a

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

pero debería ser

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

Para superar esto, use SQL dinámico o en MySQL, puede usar FIND_IN_SET :

SET @idcamposexcluidos='817,803,495';
...
WHERE FIND_IN_SET(id_campo, @idcamposexcluidos) = 0

pero usando una función como FIND_IN_SET() no puede hacer uso de índices.