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

Truy vấn với GROUP BY và ORDER BY không hoạt động khi nhiều cột trong SELECT được chọn

Bạn cần phải cẩn thận khi sử dụng GROUP BY . Khi bạn hiểu GROUP BY là gì không, bạn sẽ tự mình biết vấn đề. Nó thực hiện tổng hợp trên dữ liệu của bạn hay nói cách khác, nó giảm dữ liệu của bạn bằng cách thực hiện một số thao tác trên các mục thô và tạo số lượng mục mới giảm dần mà trên đó một số chức năng tổng hợp đã được áp dụng (SUM, COUNT, AVG, v.v.)

Các trường bạn cung cấp trong GROUP BY mệnh đề đại diện cho mức độ tổng hợp / cuộn lên mà bạn muốn.

SELECT col2, col3 FROM tbl WHERE col1 IS NULL GROUP BY col1 ORDER BY col1

Ở đây bạn đang cố gắng tổng hợp tại col1 cấp, nghĩa là đối với mọi giá trị riêng biệt có trong cột col1 , sẽ có một số thao tác được thực hiện trên một số cột khác mà bạn cung cấp trong SELECT mệnh đề (tại đây col2 , col3 ) để trong đầu ra bạn có các giá trị không lặp lại trong col1 và một số giá trị cuộn lên của col2col3 chống lại từng col1 riêng biệt giá trị dựa trên hàm bạn áp dụng (SUM, COUNT, AVG, v.v.).

Làm thế nào để bạn áp dụng chức năng này? Đó là những gì còn thiếu trong truy vấn ở trên của bạn. Để giải quyết vấn đề này, bạn cần áp dụng một số hàm tổng hợp trên các trường có trong SELECT nhưng không có trong GROUP BY mệnh đề. Lấy ví dụ về SUM, hãy thử điều này:

SELECT SUM(col2), SUM(col3) FROM tbl WHERE col1 IS NULL GROUP BY col1 ORDER BY col1

HOẶC để có ý tưởng hay hơn, hãy xóa WHERE lọc và kiểm tra đầu ra bằng cách chạy:

SELECT col1, SUM(col2), SUM(col3) FROM tbl GROUP BY col1 ORDER BY col1

Ngoài ra, lý do tại sao truy vấn khác của bạn

SELECT col2 FROM tbl WHERE col1 IS NULL GROUP BY col2 ORDER BY col2

hoạt động là do bạn không cần áp dụng tổng hợp cho trường (tại đây col2 ) có trong GROUP BY mệnh đề.



  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ần trợ giúp cài đặt MySQL cho Python

  2. HIỂN THỊ BẢNG BIỂU trong MySQL

  3. Phân trang (Trước đó | Tiếp theo) với Smarty

  4. SQL:Tham gia vào hai bảng trong đó trên cột là rỗng

  5. làm thế nào để lấy thông tin chi tiết từ nhiều bảng?