SELECT uid
, date
, SUM(USD) AS USD
, Ref_Nr
FROM my_table
GROUP
BY `date`, Ref_Nr, uid;
Trong trường hợp này, bạn phải có Ref_Nr trong nhóm bằng để có được kết quả mong muốn. uid, dựa trên dữ liệu mẫu, không cần thiết; nhưng điều khôn ngoan là luôn nhóm theo các trường không được tổng hợp từ vùng chọn trong nhóm theo. Lý do duy nhất điều này hoạt động trong mySQL là vì chúng mở rộng nhóm của ; hầu hết các RDBMS khác sẽ gây ra lỗi về các trường không được tổng hợp bị thiếu trong nhóm bởi. Trong phiên bản 5.7.5 và cao hơn, tính năng này bị tắt theo mặc định nếu được bật theo mặc định trước đó.
Về lý do tại sao cần ref_nr trong nhóm bằng cách:
MySQL engine tin rằng bạn chỉ muốn nhóm theo ngày. Vì vậy, tất cả các ref_NR được tổng hợp lại với nhau và hệ thống chỉ cần chọn một mỗi ngày để hiển thị; tương tự cho uid; nhưng vì chúng đều giống nhau; bạn không quan tâm. Đây là trường hợp với ref_nr.
Vì vậy, để giải quyết vấn đề, chỉ cần thêm ref_nr
vào nhóm bằng cách thêm UID
. Vì vậy, tốt hơn là từ nhóm theo tất cả các cột không được tổng hợp từ lựa chọn vào nhóm theo.