sql >> Databasteknik >  >> RDS >> Mysql

MySQL-variabelt format för en NOT IN-lista med värden

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.



  1. oracle SQL plus hur man avslutar kommandot i SQL-fil?

  2. Levenshtein:MySQL + PHP

  3. Konvertera MySql DateTime-stämpel till JavaScripts datumformat

  4. IN-sats med NULL eller IS NULL