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

GroupingError:ERROR:cột phải xuất hiện trong mệnh đề GROUP BY hoặc được sử dụng trong một hàm tổng hợp

Bạn không thể kết hợp SELECT * với GROUP BY some_column trong Postgres (trừ khi some_column là PK), bởi vì đó là một mâu thuẫn. Tất cả các cột không được tổng hợp (được sử dụng trong SELECT , HAVING hoặc ORDER BY mệnh đề bên ngoài một hàm tổng hợp) phải nằm trong GROUP BY list - nơi cột khóa chính có thể thay thế tất cả các cột của bảng. Khác nó là không xác định cái nào giá trị để chọn từ tập hợp tổng hợp.

Theo tài liệu:

Khi GROUP BY hiện tại hoặc bất kỳ hàm tổng hợp nào hiện có, không hợp lệ cho SELECT liệt kê các biểu thức để tham chiếu đến các cột không được nhóm ngoại trừ trong các hàm tổng hợp hoặc khi các cột không được nhóm phụ thuộc về mặt chức năng vào các cột được nhóm, vì nếu không sẽ có nhiều hơn một giá trị có thể trả về cho một cột không được nhóm. Tồn tại phụ thuộc chức năng nếu các cột được nhóm (hoặc asubset của chúng) là khóa chính của bảng chứa cột được nhóm chung.

Một RDBMS nhất định khác được biết là chơi những trò bẩn thỉu ở đây và cho phép điều này và chọn các giá trị tùy ý ...

Có vẻ như bạn muốn có một danh sách các bệnh nhân duy nhất đã nhận xét, với mới nhất nhận xét từng. Cách đơn giản nhất trong Postgres là DISTINCT ON :

SELECT DISTINCT ON (patient_id) *
FROM   comments
WHERE  clinician_id = $1
ORDER  BY patient_id, created_at DESC NULLS LAST;

Nhưng điều này sẽ không bay với SQLite - điều này không nên có trong vòng lặp để bắt đầu bằng:

  • Giải pháp Ruby chung cho SQLite3 "LIKE" hoặc PostgreSQL "ILIKE"?

NULLS LAST chỉ có liên quan nếu created_at có thể là NULL:

  • PostgreSQL sắp xếp theo datetime asc, null trước?

Chi tiết về DISTINCT ON :

  • Chọn hàng đầu tiên trong mỗi GROUP BY nhóm?



  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ách chèn vào mảng trong PostgreSQL

  2. Làm cách nào để ghi dữ liệu từ R vào các bảng PostgreSQL với khóa chính tự động tăng thêm?

  3. Năm điều thú vị tôi đã học được tại Hội nghị PostgreSQL Châu Âu 2018

  4. Sự cố khi nhập tệp txt vào postgres bằng php

  5. 7 cách tìm hàng trùng lặp trong PostgreSQL khi bỏ qua khóa chính