Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Variablenformat für eine NOT IN-Liste von Werten

Sie können den IN nicht verwenden Klausel so. Es wird zu einer Single kompiliert Zeichenfolge in Ihrem IN Klausel. Sondern ein IN Klausel muss getrennt werden Werte.

WHERE id_campo not in (@idcamposexcluidos)

kompiliert zu

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

aber es sollte sein

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

Um dies zu umgehen, verwenden Sie entweder dynamisches SQL oder in MySQL können Sie FIND_IN_SET :

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

aber mit einer Funktion wie FIND_IN_SET() kann keine Indizes verwenden.