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

Урок за MySQL:MySQL IN изявление (разширено)

Основното използване на 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     |
+-----------+----------+--------------+----------+-----------+

Работи като

  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. Python SQL – Как да използвате SQLite, MySQL и PostgreSQL бази данни с Python

  4. Урок за MySQL Workbench – Изчерпателно ръководство за инструмента RDBMS

  5. Как да разположите Percona Server за MySQL за висока наличност