Rumah > pangkalan data > tutorial mysql > Mengapa PostgreSQL GROUP BY Query Saya Gagal Semasa MySQL Berjaya?

Mengapa PostgreSQL GROUP BY Query Saya Gagal Semasa MySQL Berjaya?

DDD
Lepaskan: 2025-01-18 09:56:12
asal
718 orang telah melayarinya

Why Does My PostgreSQL GROUP BY Query Fail While MySQL Succeeds?

KUMPULAN Tegas PostgreSQL MENGIKUT Klausa dan Pengendalian Ralat

Melaksanakan pertanyaan seperti SELECT * FROM the_table GROUP BY col2 dalam PostgreSQL menghasilkan ralat: "column "the_table.col3" mesti muncul dalam klausa GROUP BY atau digunakan dalam fungsi agregat." Ini kerana PostgreSQL mematuhi piawaian SQL dengan ketat, memerlukan semua lajur dalam senarai SELECT sama ada dimasukkan dalam klausa GROUP BY atau menjadi sebahagian daripada fungsi agregat.

Fungsi Agregat: Penyelesaian

Fungsi agregat, seperti SUM(), MIN(), MAX(), AVG() dan COUNT(), hitung satu nilai daripada set nilai. Untuk membetulkan ralat PostgreSQL, anda mesti menggunakan fungsi agregat pada mana-mana lajur yang tidak terdapat dalam klausa GROUP BY.

Tingkah Laku Bukan Standard MySQL

Pengendalian MySQL yang lebih lembut terhadap GROUP BY ialah sambungan bukan standard. Ia membenarkan pemilihan lajur tidak teragregat bukan dalam klausa GROUP BY, tetapi nilai yang dipilih adalah bukan deterministik; MySQL pada asasnya memilih nilai arbitrari daripada setiap kumpulan untuk lajur ini. Ini boleh membawa kepada keputusan yang tidak dapat diramalkan dan tidak konsisten.

Pendekatan PostgreSQL yang lebih ketat menjamin hasil pertanyaan yang konsisten dan boleh dihasilkan semula.

Membetulkan Pertanyaan PostgreSQL

Untuk membetulkan pertanyaan PostgreSQL, gunakan fungsi agregat pada col3 (dan mana-mana lajur lain yang tiada dalam klausa GROUP BY). Contohnya:

<code class="language-sql">SELECT col2, MIN(col3) AS col3, MIN(col1) AS col1
FROM the_table
GROUP BY col2;</code>
Salin selepas log masuk

Pertanyaan yang disemak ini menggunakan MIN() untuk memilih nilai minimum col3 bagi setiap kumpulan yang ditakrifkan oleh col2. Anda harus memilih fungsi agregat yang sesuai (cth., MAX(), AVG()) berdasarkan hasil yang anda inginkan.

Atas ialah kandungan terperinci Mengapa PostgreSQL GROUP BY Query Saya Gagal Semasa MySQL Berjaya?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan