Основното използване на MySQL IN оператор се занимава със сравняване на една колона с множество стойности. Има също така няколко разширени приложения на MySQL IN, които правят интересни случаи на употреба. Помислете за примерната таблица user_table където на 5 потребители са присвоени различни разрешения като администратор, суперпотребител и т.н., базирани на стойности 1 или 0,
mysql> SELECT * FROM user_table; +-----------+----------+--------------+----------+-----------+ | user_id | is_admin | is_superuser | is_staff | is_active | +-----------+----------+--------------+----------+-----------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 0 | 1 | 1 | 1 | | 3 | 0 | 1 | 1 | 1 | | 4 | 0 | 0 | 0 | 1 | | 5 | 0 | 0 | 0 | 0 | +-----------+----------+--------------+----------+-----------+
Използвайте случай 1:MySQL IN израз, за да сравните стойност с множество колони
Синтаксисът му е:
SELECT * FROM TableName WHERE value IN (column1, column2, column3, column4)
Напр.
mysql> SELECT * FROM user_table WHERE 1 IN (is_admin, is_superuser, is_staff, is_active); +-----------+----------+--------------+----------+-----------+ | user_id | is_admin | is_superuser | is_staff | is_active | +-----------+----------+--------------+----------+-----------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 0 | 1 | 1 | 1 | | 3 | 0 | 1 | 1 | 1 | | 4 | 0 | 0 | 0 | 1 | +-----------+----------+--------------+----------+-----------+
Обичайният израз IN включва само ЕДНА КОЛОНА което се сравнява с множество стойности .
SELECT * FROM TableName WHERE column1 IN (1,2,3,4)
Работи като
SELECT * FROM TableName WHERE column1 = 1 OR column1 = 2 OR column1 = 3 OR column1 = 4
Това изявление е A VALUE което е сравнено с множество колони
SELECT * FROM TableName WHERE 1 IN (column1, column2, column3, column4)
е същото като
SELECT * FROM TableName WHERE column1 = 1 OR column2 = 1 OR column3 = 1 OR column4 = 1
Използвайте случай 2:MySQL IN израз за сравнение на множество колони с множество стойности
Синтаксисът му е:
SELECT * FROM TableName WHERE (column1,column2) in ((value1,value2),(value3,value4),..)
Напр.
mysql> SELECT * FROM user_table WHERE (is_staff,is_admin) in ((1,0),(1,1));
+-----------+----------+--------------+----------+-----------+ | user_id | is_admin | is_superuser | is_staff | is_active | +-----------+----------+--------------+----------+-----------+ | 1 | 1 | 1 | 1 | 1 | | 2 | 0 | 1 | 1 | 1 | +-----------+----------+--------------+----------+-----------+
Работи като