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

Chọn hàng khi cột phải thỏa mãn nhiều giá trị cùng lúc trong MySQL

Sử dụng WHERE cot IN (val1, val2) GROUP BY cot_nhom HAVING COUNT(*) = so_luong_gia_tri để tìm nhóm có đủ các giá trị yêu cầu.

Ví dụ minh họa

Tạo bảng User-Subject:

mysql> CREATE TABLE DemoTable1885 (FirstName VARCHAR(20), Subject VARCHAR(50));
mysql> INSERT INTO DemoTable1885 VALUES('John','MySQL'),('John','MongoDB'),('Carol','MySQL'),('David','Java');

Tìm user học CẢ MySQL VÀ MongoDB (đủ 2 môn):

mysql> SELECT FirstName FROM DemoTable1885
    WHERE Subject IN('MySQL','MongoDB')
    GROUP BY FirstName HAVING COUNT(*) = 2;

Kết quả:

+-----------+
| FirstName |
+-----------+
| John      |
+-----------+

Giải thích: IN lọc các hàng liên quan, GROUP BY gom theo user, HAVING COUNT=2 đảm bảo user có cả 2 môn. Chuẩn hơn dùng HAVING COUNT(DISTINCT Subject)=2 phòng trùng lặp.