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

Truy vấn MySQL đơn lẻ trả về ID NOT NULL tương ứng với tên cho trước


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 1 hoặc DISTINCT.
  • Index trên (StudentName, StudentId) sẽ tối ưu truy vấn này.