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

MySQL Tutorial:MySQL IN-sætning (avanceret)

Den grundlæggende brug af MySQL IN-sætning handler om, at en kolonne sammenlignes med flere værdier. Der er også et par avancerede anvendelser af MySQL IN-sætning, som gør interessante use cases. Overvej eksempeltabellen user_table hvor 5 brugere tildeles forskellige tilladelser som admin, superbruger osv. baseret på værdierne 1 eller 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     |
+-----------+----------+--------------+----------+-----------+

Brug Case 1:MySQL IN-sætning til at sammenligne en værdi med flere kolonner

Dets syntaks er:

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

F.eks.

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

Den sædvanlige IN-sætning involverer kun ÉN KOLONNE der bliver sammenlignet med flere værdier .

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

Det fungerer som

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

Denne erklæring er EN VÆRDI der er sammenlignet med flere kolonner

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

er det samme som

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

Brug Case 2:MySQL IN-sætning til at sammenligne flere kolonner med flere værdier

Dets syntaks er:

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

F.eks.

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

Det fungerer som

  1. MySQL Foreign Key Error 1005 errno 150 primærnøgle som fremmednøgle

  2. Brug for hjælp til beregning ved hjælp af to datasæt ved hjælp af Expression SSRS

  3. Oracle 12cR2 nu i Beta

  4. Hvordan kan jeg indsætte 10 millioner poster på kortest mulig tid?