Để đếm, bạn có thể dùng SUM() kết hợp CASE cho điều kiện. Tạo bảng:
mysql> CREATE TABLE DemoTable1485 ( StudentId INT NOT NULL AUTO_INCREMENT PRIMARY KEY, StudentName VARCHAR(20), StudentSubject VARCHAR(20) ); Query OK, 0 rows affected (0.72 sec)
Chèn bản ghi:
mysql> INSERT INTO DemoTable1485(StudentName,StudentSubject) VALUES('Chris','MySQL'); Query OK, 1 row affected (0.12 sec) mysql> INSERT INTO DemoTable1485(StudentName,StudentSubject) VALUES('Robert','MongoDB'); Query OK, 1 row affected (0.21 sec) mysql> INSERT INTO DemoTable1485(StudentName,StudentSubject) VALUES('Robert','MongoDB'); Query OK, 1 row affected (0.21 sec) mysql> INSERT INTO DemoTable1485(StudentName,StudentSubject) VALUES('Chris','Java'); Query OK, 1 row affected (0.12 sec)
Hiển thị:
mysql> SELECT * FROM DemoTable1485;
Kết quả:
+-----------+-------------+----------------+ | StudentId | StudentName | StudentSubject | +-----------+-------------+----------------+ | 1 | Chris | MySQL | | 2 | Robert | MongoDB | | 3 | Robert | MongoDB | | 4 | Chris | Java | +-----------+-------------+----------------+ 4 rows in set (0.00 sec)
Truy vấn đếm nhiều điều kiện không dùng COUNT():
mysql> SELECT StudentSubject, SUM(CASE WHEN StudentName = 'Chris' THEN 1 ELSE 0 END) AS Chris_Count, SUM(CASE WHEN StudentName = 'Robert' THEN 1 ELSE 0 END) AS Robert_Count FROM DemoTable1485 GROUP BY StudentSubject;
Kết quả:
+----------------+-------------+--------------+ | StudentSubject | Chris_Count | Robert_Count | +----------------+-------------+--------------+ | MySQL | 1 | 0 | | MongoDB | 0 | 2 | | Java | 1 | 0 | +----------------+-------------+--------------+ 3 rows in set (0.00 sec)