Vấn đề
Bảng có cột StudentId có thể NULL. Cần truy vấn lấy StudentId của một StudentName cụ thể, nhưng chỉ khi StudentId **KHÔNG NULL**.
Ví dụ minh họa
Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (
StudentId INT,
StudentName VARCHAR(100)
);
mysql> INSERT INTO DemoTable VALUES (NULL, 'Chris'), (NULL, 'Robert'), (101, 'David'), (102, 'Mike'), (103, 'Sam');
Truy vấn: StudentName='David' AND StudentId IS NOT NULL
mysql> SELECT StudentId FROM DemoTable WHERE StudentName = 'David' AND StudentId IS NOT NULL;
Kết quả
+-----------+ | StudentId | +-----------+ | 101 | +-----------+
Giải thích
StudentId IS NOT NULL: Điều kiện lọc giá trị NULL. Không dùng!= NULL.- Kết hợp với điều kiện tên bằng
AND.
Mở rộng: Lấy ID NOT NULL đầu tiên theo thứ tự nào đó
SELECT StudentId FROM DemoTable WHERE StudentId IS NOT NULL ORDER BY StudentId LIMIT 1;
Lưu ý
- Nếu StudentName không unique, có thể trả về nhiều dòng. Thêm
LIMIT 1hoặcDISTINCT. - Index trên (StudentName, StudentId) sẽ tối ưu truy vấn này.