Có thể dùng subquery trong mệnh đề WHERE để so sánh tổng số dòng của bảng với một giá trị.
Cú pháp:
SELECT col1, col2 FROM yourTableName WHERE (SELECT COUNT(*) FROM yourTableName) = 2;
Tạo bảng:
mysql> CREATE TABLE CountWithSubqueryDemo (Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, EmployeeName VARCHAR(20));
Chèn 9 dòng (có NULL và rỗng):
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | John | | 2 | NULL | | 3 | Carol | | 4 | | | 5 | Bob | | 6 | NULL | | 7 | Sam | | 8 | Mike | | 9 | James | +----+--------------+
Truy vấn kiểm tra nếu bảng có đúng 2 dòng:
mysql> SELECT Id, EmployeeName FROM CountWithSubqueryDemo WHERE (SELECT COUNT(*) FROM CountWithSubqueryDemo) = 2;
Kết quả: Empty set (vì bảng có 9 dòng).
Xóa dữ liệu và chèn 2 dòng:
mysql> TRUNCATE TABLE CountWithSubqueryDemo;
mysql> INSERT INTO CountWithSubqueryDemo(EmployeeName) VALUES('James'), (NULL);
Chạy lại truy vấn:
+----+--------------+ | Id | EmployeeName | +----+--------------+ | 1 | James | | 2 | NULL | +----+--------------+
Lưu ý: Subquery trong WHERE được thực thi cho mỗi dòng, có thể chậm trên bảng lớn. Cân nhắc dùng biến hoặc CTE (MySQL 8.0+).