Việc sử dụng cơ bản của câu lệnh IN MySQL xử lý một cột được so sánh với nhiều giá trị. Ngoài ra còn có một số cách sử dụng nâng cao của câu lệnh MySQL IN tạo ra các trường hợp sử dụng thú vị. Xem xét bảng mẫu user_table trong đó 5 người dùng được chỉ định các quyền khác nhau với tư cách là quản trị viên, cấp trên, v.v. dựa trên các giá trị 1 hoặc 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 | +-----------+----------+--------------+----------+-----------+
Trường hợp sử dụng 1:Câu lệnh MySQL IN để so sánh một giá trị với nhiều cột
Cú pháp của nó là:
SELECT * FROM TableName WHERE value IN (column1, column2, column3, column4)
Ví dụ:
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 | +-----------+----------+--------------+----------+-----------+
Câu lệnh IN thông thường chỉ liên quan đến MỘT CỘT đang được so sánh với nhiều giá trị .
SELECT * FROM TableName WHERE column1 IN (1,2,3,4)
Nó hoạt động như
SELECT * FROM TableName WHERE column1 = 1 OR column1 = 2 OR column1 = 3 OR column1 = 4
Tuyên bố này là A VALUE đó là so với nhiều cột
SELECT * FROM TableName WHERE 1 IN (column1, column2, column3, column4)
giống như
SELECT * FROM TableName WHERE column1 = 1 OR column2 = 1 OR column3 = 1 OR column4 = 1
Trường hợp sử dụng 2:Câu lệnh MySQL IN để so sánh nhiều cột với nhiều giá trị
Cú pháp của nó là:
SELECT * FROM TableName WHERE (column1,column2) in ((value1,value2),(value3,value4),..)
Ví dụ:
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 | +-----------+----------+--------------+----------+-----------+
Nó hoạt động như