Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Hiển thị nhiều hàng được chọn với MySQL IN() tuple

MySQL cho phép dùng IN() với tuple (cặp giá trị) để lọc hàng khớp chính xác nhiều cột cùng lúc: WHERE (col1, col2) IN ((val1,val2), (val3,val4), ...).

Ví dụ minh họa

Tạo bảng có AUTO_INCREMENT từ 100:

mysql> create table DemoTable1045 ( 
    Id int NOT NULL AUTO_INCREMENT PRIMARY KEY, 
    FirstName varchar(100) 
) AUTO_INCREMENT=100;

Chèn dữ liệu:

mysql> insert into DemoTable1045(FirstName) values('John');
mysql> insert into DemoTable1045(FirstName) values('Chris');
mysql> insert into DemoTable1045(FirstName) values('Robert');
mysql> insert into DemoTable1045(FirstName) values('Mike');
mysql> insert into DemoTable1045(FirstName) values('Adam');

Hiển thị dữ liệu:

mysql> select * from DemoTable1045;

Kết quả:

+-----+-----------+
| Id  | FirstName |
+-----+-----------+
| 100 | John      |
| 101 | Chris     |
| 102 | Robert    |
| 103 | Mike      |
| 104 | Adam      |
+-----+-----------+

Truy vấn IN với tuple (Id, FirstName)

mysql> select * from DemoTable1045 tbl 
where (tbl.Id, tbl.FirstName) IN ((101, 'Chris'), (102, 'Robert'), (104,'Adam'));

Kết quả:

+-----+-----------+
| Id  | FirstName |
+-----+-----------+
| 101 | Chris     |
| 102 | Robert    |
| 104 | Adam      |
+-----+-----------+

Giải thích:

  • (tbl.Id, tbl.FirstName): Tuple 2 cột bên trái
  • IN ((101,'Chris'), (102,'Robert'), (104,'Adam')): Danh sách tuple bên phải
  • So sánh từng cặp: cả Id VÀ FirstName phải khớp
  • Hiệu quả hơn nhiều so với: (Id=101 AND FirstName='Chris') OR (Id=102 AND FirstName='Robert') ...

Ứng dụng: Batch lookup, kiểm tra tồn tại nhiều khóa chính composite, sync dữ liệu giữa hệ thống.