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

Nhóm theo mệnh đề trong mySQL và postgreSQL, tại sao lỗi trong postgreSQL?

Bạn cần sử dụng CHỨC NĂNG AGGREGATE :

Các hàm tổng hợp tính toán một kết quả duy nhất từ ​​một tập hợp các giá trị đầu vào.

SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table 
GROUP BY col2;

db <> fiddle demo

Xử lý MySQL của GROUP BY :

Trong SQL chuẩn, truy vấn bao gồm mệnh đề GROUP BY không thể tham chiếu đến các cột không được tổng hợp trong danh sách chọn không có tên trong mệnh đềGROUP BY

và:

MySQL mở rộng việc sử dụng GROUP BY để danh sách chọn có thể tham chiếu đến các cột không được tổng hợp không có tên trong mệnh đề GROUP BY. Điều này có nghĩa là truy vấn trước đó là hợp pháp trong MySQL. Bạn có thể sử dụng tính năng này để có được hiệu suất tốt hơn bằng cách tránh phân loại và nhóm cột không cần thiết. Tuy nhiên, điều này chủ yếu hữu ích khi tất cả các giá trị trong mỗi cột không được tổng hợp không có tên trong GROUP BY là giống nhau cho mỗi nhóm. Máy chủ có thể tự do chọn bất kỳ giá trị nào từ mỗi nhóm, vì vậy trừ khi chúng giống nhau, các giá trị được chọn là không xác định

Vì vậy, với phiên bản MySQL không có hàm tổng hợp rõ ràng, bạn có thể kết thúc với các giá trị không xác định. Tôi thực sự khuyên bạn nên sử dụng hàm tổng hợp cụ thể.

CHỈNH SỬA:

Từ Xử lý MySQL của GROUP BY :

SQL92 trở về trước không cho phép các truy vấn mà danh sách chọn, điều kiện HAVING hoặc danh sách ORDER BY tham chiếu đến các cột không được tổng hợp không có tên trong mệnh đề GROUP BY.

SQL99 trở lên cho phép các tập hợp như vậy cho mỗi tính năng tùy chọn T301 nếu chúng phụ thuộc về mặt chức năng vào các cột GROUP BY: Nếu một mối quan hệ như vậy tồn tại giữa tên và custid, thì truy vấn là hợp pháp. Đây sẽ là trường hợp, chẳng hạn, custid là khóa chính của khách hàng.

Ví dụ:

SELECT o.custid, c.name, MAX(o.payment)
FROM orders AS o
JOIN customers AS c
  ON o.custid = c.custid
GROUP BY o.custid;


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. 4 công cụ dòng lệnh hữu ích để giám sát hiệu suất MySQL trong Linux

  2. Hàm MySQL LN () - Trả về Logarit tự nhiên của một số

  3. Làm cách nào để lấy các kiểu số từ MySQL bằng PDO?

  4. Loại lỗi cú pháp không hợp lệ =MyISAM trong DDL được tạo bởi Hibernate

  5. Nâng cấp giản đồ trực tuyến trong MySQL Galera Cluster bằng phương pháp RSU