Mysql
 sql >> Database >  >> RDS >> Mysql

Formato variabile MySQL per un elenco di valori NOT IN

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.