sql >> Databáze >  >> RDS >> Mysql

Výukový program MySQL:Příkaz MySQL IN (pokročilý)

Základní použití příkazu MySQL IN se zabývá porovnáním jednoho sloupce s více hodnotami. Existuje také několik pokročilých použití příkazu MySQL IN, které představují zajímavé případy použití. Zvažte ukázkovou tabulku user_table kde 5 uživatelům má přiřazena různá oprávnění jako admin, superuser atd. na základě hodnot 1 nebo 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     |
+-----------+----------+--------------+----------+-----------+

Použijte Případ 1 :Příkaz MySQL IN k porovnání hodnoty s více sloupci

Jeho syntaxe je:

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

Např.

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

Obvyklý příkaz IN obsahuje pouze JEDEN SLOUPEK který se porovnává s více hodnotami .

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

Funguje jako

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

Toto prohlášení je HODNOTA to je ve srovnání s více sloupci

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

je stejný jako

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

Použijte Případ 2 :Příkaz MySQL IN k porovnání více sloupců s více hodnotami

Jeho syntaxe je:

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

Např.

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

Funguje jako

  1. Opravdu musím použít SET XACT_ABORT ON?

  2. Jak přenést pole json do textového pole?

  3. Proč se odhadovaný počet řádků ve výsledcích phpmyadmin velmi liší?

  4. Zabezpečení databáze – šifrování záloh během přepravy a v klidu