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

PostgreSQL GROUP BY khác với MySQL?

MySQL hoàn toàn không tuân thủ tiêu chuẩn GROUP BY có thể được mô phỏng bởi Postgres 'DISTINCT ON . Hãy xem xét điều này:

MySQL:

SELECT a,b,c,d,e FROM table GROUP BY a

Điều này phân phối 1 hàng cho mỗi giá trị của a (cái nào, bạn không thực sự biết). Thực ra thì bạn cũng có thể đoán được, bởi vì MySQL không biết về tổng hợp băm, vì vậy nó có thể sẽ sử dụng một loại ... nhưng nó sẽ chỉ sắp xếp trên a , vì vậy thứ tự của các hàng có thể là ngẫu nhiên. Trừ khi nó sử dụng chỉ mục đa cột thay vì sắp xếp. Chà, dù sao, nó không được chỉ định bởi truy vấn.

Postgres:

SELECT DISTINCT ON (a) a,b,c,d,e FROM table ORDER BY a,b,c

Điều này phân phối 1 hàng cho mỗi giá trị của a , hàng này sẽ là hàng đầu tiên trong loại theo ORDER BY được chỉ định bởi truy vấn. Đơn giản.

Lưu ý rằng ở đây, nó không phải là tổng hợp mà tôi đang tính toán. Vì vậy, GROUP BY thực sự không có ý nghĩa. DISTINCT ON có ý nghĩa hơn rất nhiều.

Rails đã kết hôn với MySQL, vì vậy tôi không ngạc nhiên khi nó tạo ra SQL không hoạt động trong Postgres.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo sơ đồ cơ sở dữ liệu trong MySQL Workbench

  2. PostgreSQL so với MySQL

  3. mysql_fetch_array () / mysql_fetch_assoc () / mysql_fetch_row () / mysql_num_rows etc ... mong muốn tham số 1 là tài nguyên

  4. Làm cách nào để đặt mysqli ném ngoại lệ bằng MYSQLI_REPORT_STRICT?

  5. Khớp tất cả các giá trị trong mệnh đề IN