Computer >> Máy Tính >  >> Lập trình >> MySQL

Thực hiện đếm nhiều mà không sử dụng MySQL COUNT ()?

Để đếm, bạn có thể sử dụng SUM () cùng với câu lệnh CASE cho các điều kiện. Đầu tiên chúng ta hãy tạo một 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 một số bản ghi vào bảng bằng lệnh chèn -

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ị tất cả các bản ghi từ bảng bằng câu lệnh select -

mysql> select * from DemoTable1485;

Điều này sẽ tạo ra kết quả sau -

+-----------+-------------+----------------+
| StudentId | StudentName | StudentSubject |
+-----------+-------------+----------------+
|         1 | Chris       |          MySQL |
|         2 | Robert      |        MongoDB |
|         3 | Robert      |        MongoDB |
|         4 | Chris       |           Java |
+-----------+-------------+----------------+
4 rows in set (0.00 sec)

Đây là truy vấn để thực hiện đếm nhiều lần mà không sử dụng phương thức COUNT () -

mysql> select StudentSubject,
   -> sum(case when StudentName = 'Chris' THEN 1 ELSE 0 END) Chris_Count,
   -> sum(case when StudentName = 'Robert' THEN 1 ELSE 0 END) Robert_Count
   -> from DemoTable1485
   -> group by StudentSubject;

Điều này sẽ tạo ra kết quả sau -

+----------------+-------------+--------------+
| StudentSubject | Chris_Count | Robert_Count |
+----------------+-------------+--------------+
| MySQL          |           1 |            0 |
| MongoDB        |           0 |            2 |
| Java           |           1 |            0 |
+----------------+-------------+--------------+
3 rows in set (0.00 sec)