Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Samouczek MySQL:instrukcja MySQL IN (zaawansowane)

Podstawowe użycie instrukcji MySQL IN polega na porównaniu jednej kolumny z wieloma wartościami. Istnieje również kilka zaawansowanych zastosowań instrukcji MySQL IN, które stanowią interesujące przypadki użycia. Rozważ przykładową tabelę user_table gdzie 5 użytkowników ma przydzielone różne uprawnienia jako administrator, superużytkownik itp. w oparciu o wartości 1 lub 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     |
+-----------+----------+--------------+----------+-----------+

Użyj przypadku 1:instrukcja MySQL IN, aby porównać wartość z wieloma kolumnami

Jego składnia to:

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

Np.

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

Zwykłe stwierdzenie IN obejmuje tylko JEDNĄ KOLUMNĘ czyli porównywane z wieloma wartościami .

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

Działa jako

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

To stwierdzenie jest WARTOŚCIĄ czyli w porównaniu z wieloma kolumnami

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

jest taki sam jak

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

Użyj przypadku 2:instrukcja MySQL IN do porównania wielu kolumn z wieloma wartościami

Jego składnia to:

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

Np.

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

Działa jak

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak stworzyć widok MySQL

  2. MySQL - zignoruj ​​błąd wstawiania:zduplikowany wpis

  3. Preferowany silnik MySQL – MyISAM lub InnoDB

  4. Jak wypełnić brakujące daty w MySQL?

  5. mysql, iteruj przez nazwy kolumn