Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL-Tutorial:MySQL-IN-Anweisung (Fortgeschrittene)

Die grundlegende Verwendung der MySQL IN-Anweisung befasst sich damit, dass eine Spalte mit mehreren Werten verglichen wird. Es gibt auch einige fortgeschrittene Anwendungen der MySQL IN-Anweisung, die interessante Anwendungsfälle darstellen. Betrachten Sie die Beispieltabelle user_table wobei 5 Benutzern unterschiedliche Berechtigungen als Admin, Superuser usw. basierend auf den Werten 1 oder 0 zugewiesen werden,

mysql> SELECT * FROM user_table;+-----------+----------+--------------+- ---------+-----------+| Benutzer-ID | is_admin | is_superuser | is_staff | ist_aktiv |+-----------+----------+-------------+--------- -+-----------+| 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 |+-----------+----------+-------------+--------- -+-----------+

Anwendungsfall 1:MySQL IN-Anweisung, um einen Wert mit mehreren Spalten zu vergleichen

Die Syntax lautet:

SELECT * FROM TableName WHERE Wert IN (Spalte1, Spalte2, Spalte3, Spalte4)

Beispiel:

mysql> SELECT * FROM user_table WHERE 1 IN (is_admin, is_superuser, is_staff, is_active);+-----------+----------+---- ----------+----------+----------+| Benutzer-ID | is_admin | is_superuser | is_staff | ist_aktiv |+-----------+----------+-------------+--------- -+-----------+| 1 | 1 | 1 | 1 | 1 || 2 | 0 | 1 | 1 | 1 || 3 | 0 | 1 | 1 | 1 || 4 | 0 | 0 | 0 | 1 |+-----------+----------+-------------+--------- -+-----------+

Die übliche IN-Anweisung umfasst nur EINE SPALTE das wird mit mehreren Werten verglichen .

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

Es funktioniert als

SELECT * FROM TableName WHERE Spalte1 =1 ODER Spalte1 =2 ODER Spalte1 =3 ODER Spalte1 =4

Diese Anweisung ist EIN WERT das wird mit mehreren Spalten verglichen

SELECT * FROM TableName WHERE 1 IN (Spalte1, Spalte2, Spalte3, Spalte4)

ist dasselbe wie

SELECT * FROM TableName WHERE Spalte1 =1 ODER Spalte2 =1 ODER Spalte3 =1 ODER Spalte4 =1

Anwendungsfall 2:MySQL IN-Anweisung, um mehrere Spalten mit mehreren Werten zu vergleichen

Die Syntax lautet:

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

Beispiel:

mysql> SELECT * FROM user_table WHERE (ist_staff,ist_admin) in ((1,0),(1,1));
+-----------+----------+-------------+-------- --+-----------+| Benutzer-ID | is_admin | is_superuser | is_staff | ist_aktiv |+-----------+----------+-------------+--------- -+-----------+| 1 | 1 | 1 | 1 | 1 || 2 | 0 | 1 | 1 | 1 |+-----------+----------+-------------+--------- -+-----------+

Es funktioniert als