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

MYSQL променлива IN клауза

Ще искате да разгледате find_in_set() функция:

SELECT
    *
FROM
    your_table
WHERE
    NOT FIND_IN_SET(User.user_name, @valid_users);

За да работи това, разделеният със запетаи списък не трябва да съдържа кавички (освен ако вашите потребителски имена действително не съдържат кавички) и не трябва да се допълва с интервали:

SET @valid_users := 'admin,jrock,kmicka,First Last';

Пример за SqlFiddle

За да отговоря директно на въпроса ви относно „защо една променлива в NOT IN филтърна работа", това е защото @valid_users се третира като низ и когато го подадете към IN() , той се третира като единичен низ (т.е. не набор/списък). С FIND_IN_SET() , той третира низа в @valid_users като разделен със запетая набор/списък и го използва съответно.




  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 таблица и отчитане

  3. SQLSTATE[HY000] [1040] Твърде много връзки

  4. Дизайн на база данни за валидиране на динамично поле на формуляр

  5. Защо редът с най-нисък идентификатор винаги се връща, когато се връща и MAX стойност за колона?