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

Mengapa MySQL GROUP BY Query Saya Gagal dalam PostgreSQL?

Barbara Streisand
Lepaskan: 2025-01-11 07:36:43
asal
159 orang telah melayarinya

Why Does My MySQL GROUP BY Query Fail in PostgreSQL?

PostgreSQL dan MySQL: A KUMPULAN MENGIKUT Perbandingan Klausa

Menghijrahkan pertanyaan MySQL ke PostgreSQL boleh membawa kepada ralat "lajur 'XYZ' mesti muncul dalam klausa GROUP BY atau digunakan dalam fungsi agregat." Percanggahan ini berpunca daripada cara pangkalan data ini mengendalikan klausa GROUP BY.

Pendekatan Bukan Standard MySQL

Pelaksanaan

MySQL GROUP BY menyimpang daripada standard SQL. Ia membenarkan pemilihan lajur yang tidak disenaraikan secara eksplisit dalam klausa GROUP BY, menghasilkan output yang tidak dapat diramalkan. Baris yang dipilih daripada setiap kumpulan ditentukan secara tersirat, dipengaruhi oleh faktor seperti pengindeksan dan pengoptimuman pertanyaan.

Patuh Standard PostgreSQL GROUP BY

PostgreSQL, bagaimanapun, mematuhi standard SQL dengan ketat. Semua lajur dalam senarai SELECT mesti sama ada dimasukkan dalam klausa GROUP BY atau menjadi sebahagian daripada fungsi agregat (seperti SUM, AVG, COUNT). Jika tidak, ralat yang disebutkan di atas berlaku.

Menerap Gelagat MySQL dalam PostgreSQL

Walaupun pendekatan PostgreSQL lebih boleh diramal dan mematuhi piawaian, anda boleh mensimulasikan tingkah laku bukan standard MySQL menggunakan DISTINCT ON. Pertanyaan PostgreSQL berikut menunjukkan ini:

<code class="language-sql">SELECT DISTINCT ON (availables.bookdate)
availables.*,
rooms.hotel_id
FROM availables
INNER JOIN rooms ON rooms.id = availables.room_id
WHERE rooms.hotel_id = 5056
AND availables.bookdate BETWEEN '2009-11-22' AND '2009-11-24'
ORDER BY availables.updated_at;</code>
Salin selepas log masuk

DISTINCT ON mengembalikan satu baris untuk setiap nilai yang berbeza dalam availables.bookdate, mengekalkan susunan baris yang ditentukan oleh klausa ORDER BY. Ini secara berkesan meniru gelagat GROUP BY bukan standard MySQL dalam senario khusus ini. Ambil perhatian bahawa pendekatan ini bergantung pada klausa ORDER BY untuk menentukan baris mana yang dipilih untuk setiap kumpulan yang berbeza.

Atas ialah kandungan terperinci Mengapa MySQL GROUP BY Query Saya Gagal dalam PostgreSQL?. 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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan