Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao COUNT () chỉ hiển thị một hàng của bảng?

COUNT() là một hàm tổng hợp thường được kết hợp với GROUP BY mệnh đề.

curdate() là một hàm ngày tháng cho ra ngày hiện tại.

Chỉ MySQL (theo như tôi biết) cho phép cú pháp này mà không cần sử dụng GROUP BY mệnh đề. Vì bạn không cung cấp nên COUNT(*) sẽ đếm tổng số hàng trong bảng và owner cột sẽ được chọn ngẫu nhiên / mặc định của trình tối ưu hóa / theo chỉ mục.

Đây phải là truy vấn của bạn:

select owner, count(*) 
from pet
group by owner;

Điều này yêu cầu trình tối ưu hóa đếm tổng số hàng cho mỗi hàng chủ sở hữu.

Khi không có mệnh đề nhóm nào được đề cập - các hàm tổng hợp được áp dụng trên toàn bộ dữ liệu của bảng.

CHỈNH SỬA: Việc đếm sẽ được áp dụng trên mỗi hàng thường không thể được thực hiện với COUNT() và thường được sử dụng với một hàm phân tích -> COUNT() OVER(PARTITION...) tiếc là không tồn tại trong MySQL. Tùy chọn khác của bạn là tạo JOIN/CORRELATED QUERY cho cột bổ sung này.

Chỉnh sửa khác: Nếu bạn muốn tổng số bên cạnh mỗi chủ sở hữu, bạn có thể sử dụng một truy vấn phụ:

SELECT owner,
       (SELECT COUNT(*) FROM pet) as cnt
FROM pet


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Các mô hình Django có thể sử dụng các hàm MySQL không?

  2. đối sánh với các từ có dấu trọng âm, âm sắc, v.v. mysql / php

  3. Sắp xếp sau khi cuộn lên bảo toàn vị trí hàng tổng và tổng phụ

  4. Phát hiện nếu giá trị là số trong MySQL

  5. Thêm 6 giờ vào hàm now ()