Mysql
 sql >> Database >  >> RDS >> Mysql

Tutorial MySQL:istruzione MySQL IN (avanzata)

L'uso di base dell'istruzione MySQL IN si occupa del confronto di una colonna con più valori. Ci sono anche un paio di usi avanzati dell'istruzione MySQL IN che creano casi d'uso interessanti. Considera la tabella di esempio user_table dove a 5 utenti vengono assegnate autorizzazioni diverse come amministratore, superutente, ecc. Valori basati su 1 o 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     |
+-----------+----------+--------------+----------+-----------+

Usa il caso 1:istruzione MySQL IN per confrontare un valore con più colonne

La sua sintassi è:

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

Ad esempio,

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

La consueta istruzione IN coinvolge solo UNA COLONNA che viene confrontato con più valori .

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

Funziona come

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

Questa affermazione è UN VALORE cioè rispetto a più colonne

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

è uguale a

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

Utilizzare il caso 2:istruzione MySQL IN per confrontare più colonne con più valori

La sua sintassi è:

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

Ad esempio,

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

Funziona come