Mysql
 sql >> база данни >  >> RDS >> Mysql

Формат на променливата на MySQL за списък със стойности NOT IN

Не можете да използвате IN клауза такава. Той се компилира в единично низ във вашия IN клауза. Но IN клаузата се нуждае от отделно стойности.

WHERE id_campo not in (@idcamposexcluidos)

компилира в

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

но трябва да е

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

За да преодолеете това, използвайте динамичен SQL или в MySQL можете да използвате FIND_IN_SET :

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

но използвайки функция като FIND_IN_SET() не може да използва индекси.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL:Най-бързият начин за преброяване на броя на редовете

  2. MySQL не използва индекси с клауза WHERE IN?

  3. SYSDATE() срещу NOW() в MySQL:Каква е разликата?

  4. 2 начина за изброяване на всички функции в MySQL

  5. Възможно ли е да се наложи проверка на данни в MySQL с помощта на регулярен израз