Làm cách nào để đếm giá trị cụ thể trong MySQL?

Hàm MySQL

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
1 cho phép bạn đếm số lần một giá trị nhất định xuất hiện trong cơ sở dữ liệu MySQL của bạn

Hàm này cũng có thể giúp bạn đếm xem bạn có bao nhiêu hàng trong bảng MySQL của mình

Hàm có một tham số

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
2 nơi bạn có thể chỉ định điều kiện của truy vấn

Cú pháp của hàm

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
1 như sau

SELECT COUNT(expression)

Ví dụ: giả sử bạn có một bảng

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
4 liệt kê các thú cưng
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
5,
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
6 và
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
7 như sau

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+

Giả sử bạn muốn đếm xem bảng

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
4 có bao nhiêu hàng. Bạn có thể sử dụng ký hiệu dấu hoa thị
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
9 làm đối số cho hàm
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
1

Biểu tượng dấu hoa thị trong MySQL có nghĩa là chọn tất cả các cột trong bảng, vì vậy biểu thức

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
21 có nghĩa là tất cả các hàng sẽ được tính, ngay cả những hàng có giá trị
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
22 và trùng lặp

Truy vấn MySQL sau đây

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
2

Sẽ tạo ra tập kết quả sau

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
5

Nếu bạn chỉ muốn đếm các hàng có giá trị trường cụ thể, thì bạn có thể thêm mệnh đề

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
23 vào truy vấn

Ví dụ: giả sử bạn chỉ muốn đếm các hàng có giá trị

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
5 là
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
25. Bạn có thể sử dụng truy vấn sau

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
9

Tập kết quả sẽ như sau

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
0

Vì chúng tôi có ba thú cưng 4 tuổi nên truy vấn hoạt động như dự kiến. Nhưng kết quả có thể có nhiều thông tin hơn bằng cách trả về

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
6 của vật nuôi

Để trả về

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
6 của thú cưng, bạn cần thêm cột
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
6 vào câu lệnh SELECT, sau đó nhóm truy vấn theo cột
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
6 bằng cách sử dụng mệnh đề
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
50

truy vấn sau

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
6

Sẽ tạo ra tập kết quả sau

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
7

Bây giờ bạn biết rằng có một con mèo, một con ngựa và một con chó bốn tuổi

Hàm

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
51 là một hàm tổng hợp, có nghĩa là bạn cần sử dụng mệnh đề
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
50 khi bạn cũng chọn các trường không tổng hợp (câu lệnh chọn cột bình thường)

Theo mặc định, chỉ một giá trị khác null được bao gồm trong tập kết quả

Trong truy vấn SQL sau đây, cột

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
5 có giá trị null bị loại trừ khỏi tập kết quả

SELECT COUNT(expression)
1

Trong khi thực tế có hai hàng của

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
54 loài, MySQL chỉ tính một hàng vì hàng
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
54 khác có giá trị
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
5 là
+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
57

Cuối cùng, bạn cũng có thể biết mỗi

+----+--------+---------+------+
| id | owner  | species | age  |
+----+--------+---------+------+
|  1 | Jessie | bird    |    2 |
|  2 | Jessie | dog     |    6 |
|  3 | Ann    | duck    |    3 |
|  4 | Ann    | duck    |    2 |
|  5 | Ann    | duck    |    3 |
|  6 | Gary   | cat     | NULL |
|  7 | Gary   | cat     |    4 |
|  8 | Joe    | horse   |    4 |
|  9 | Mark   | dog     |    4 |
| 10 | Peter  | dog     |    5 |
+----+--------+---------+------+
7 có bao nhiêu con vật trong bảng của mình bằng truy vấn sau