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

Thực hiện đếm nhiều điều kiện không dùng COUNT() trong MySQL

Để đế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)