Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Kelompokkan demi klausa di mySQL dan postgreSQL, mengapa kesalahan di postgreSQL?

Anda perlu menggunakan FUNGSI AGREGAT :

Fungsi agregat menghitung satu hasil dari sekumpulan nilai input.

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

db<>demo biola

Penanganan MySQL dari GROUP BY :

Dalam SQL standar, kueri yang menyertakan klausa GROUP BY tidak dapat merujuk ke kolom yang tidak teragregasi dalam daftar pilih yang tidak disebutkan dalam klausa GROUP BY

dan:

MySQL memperluas penggunaan GROUP BY sehingga daftar pilih dapat merujuk ke kolom non-agregat yang tidak disebutkan dalam klausa GROUP BY. Ini berarti bahwa kueri sebelumnya legal di MySQL. Anda dapat menggunakan fitur ini untuk mendapatkan kinerja yang lebih baik dengan menghindari penyortiran dan pengelompokan kolom yang tidak perlu. Namun, ini berguna terutama ketika semua nilai di setiap kolom non-agregat yang tidak disebutkan dalam GROUP BY adalah sama untuk setiap grup. Server bebas memilih nilai apa pun dari setiap grup, jadi kecuali nilainya sama, nilai yang dipilih tidak dapat ditentukan

Jadi dengan versi MySQL tanpa fungsi agregat eksplisit, Anda mungkin berakhir dengan nilai yang tidak pasti. Saya sangat menyarankan untuk menggunakan fungsi agregat tertentu.

EDIT:

Dari Penanganan MySQL dari GROUP BY :

SQL92 dan sebelumnya tidak mengizinkan kueri yang daftar pilih, kondisi HAVING, atau daftar ORDER BY merujuk ke kolom nonagregated yang tidak disebutkan dalam klausa GROUP BY.

SQL99 dan yang lebih baru mengizinkan nonagregat seperti itu per fitur opsional T301 jika mereka secara fungsional bergantung pada kolom GROUP BY: Jika ada hubungan seperti itu antara nama dan custid, kueri itu legal. Ini akan menjadi kasus, misalnya, adalah custid kunci utama pelanggan.

Contoh:

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. YEARWEEK() Contoh – MySQL

  2. Bisakah Mysql Membagi kolom?

  3. Buat Cadangan Fisik dari MariaDB atau Database MySQL Anda

  4. konfigurasi mysql berhenti saat memulai server

  5. MySQL – Pulihkan Basis Data Skema Kinerja yang Dijatuhkan