Mysql
 sql >> Base de données >  >> RDS >> Mysql

Tutoriel MySQL :Instruction MySQL IN (Avancé)

L'utilisation de base de l'instruction MySQL IN consiste à comparer une colonne à plusieurs valeurs. Il existe également quelques utilisations avancées de l'instruction MySQL IN qui constituent des cas d'utilisation intéressants. Prenons l'exemple de table user_table où 5 utilisateurs se voient attribuer différentes autorisations en tant qu'administrateur, superutilisateur, etc., en fonction des valeurs 1 ou 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     |
+-----------+----------+--------------+----------+-----------+

Utilisez le cas 1 :Instruction MySQL IN pour comparer une valeur avec plusieurs colonnes

Sa syntaxe est :

SELECT * FROM TableName WHERE value IN (column1, column2, column3, column4)

Par exemple,

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     |
+-----------+----------+--------------+----------+-----------+

L'instruction IN habituelle n'implique qu'une UNE COLONNE qui est comparée à plusieurs valeurs .

SELECT * FROM TableName WHERE column1 IN (1,2,3,4)

Cela fonctionne comme

SELECT  * FROM   TableName WHERE  column1 = 1 OR column1 = 2 OR column1 = 3 OR column1 = 4

Cette déclaration est UNE VALEUR qui est comparé à plusieurs colonnes

SELECT * FROM TableName WHERE 1 IN (column1, column2, column3, column4)

est identique à

SELECT  * FROM   TableName WHERE  column1 = 1 OR column2 = 1 OR column3 = 1 OR column4 = 1

Utilisez le cas 2 :Instruction MySQL IN pour comparer plusieurs colonnes avec plusieurs valeurs

Sa syntaxe est :

SELECT * FROM TableName WHERE (column1,column2) in ((value1,value2),(value3,value4),..)

Par exemple,

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     |
+-----------+----------+--------------+----------+-----------+

Cela fonctionne comme