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

Truy vấn MySQL lấy bản ghi không có giá trị trong cột với subquery

Sử dụng NOT IN với subquery để tìm các giá trị trong cột này không xuất hiện trong tập kết quả của subquery (ví dụ: user không phải Admin).

Ví dụ minh họa

Tạo bảng và chèn dữ liệu:

mysql> CREATE TABLE DemoTable1840 (UserName VARCHAR(20), UserType ENUM('GUEST','ADMIN'));
mysql> INSERT INTO DemoTable1840 VALUES('Chris','Admin'),('David','Guest'),('Chris','Guest');

Tìm UserName KHÔNG có vai trò Admin:

mysql> SELECT UserName FROM DemoTable1840
    WHERE UserName NOT IN (SELECT UserName FROM DemoTable1840 WHERE UserType='Admin');

Kết quả:

+----------+
| UserName |
+----------+
| David    |
+----------+

Lưu ý: NOT IN trả về rỗng nếu subquery chứa NULL. Thay thế bằng NOT EXISTS an toàn hơn:

SELECT UserName FROM DemoTable1840 t1
WHERE NOT EXISTS (SELECT 1 FROM DemoTable1840 t2 WHERE t2.UserName=t1.UserName AND t2.UserType='Admin');