Rumah >pangkalan data >tutorial mysql >PostgreSQL lwn MySQL GROUP OLEH: Bagaimana Mencapai Gelagat Pengelompokan MySQL dalam PostgreSQL?

PostgreSQL lwn MySQL GROUP OLEH: Bagaimana Mencapai Gelagat Pengelompokan MySQL dalam PostgreSQL?

Patricia Arquette
Patricia Arquetteasal
2025-01-11 08:24:42813semak imbas

PostgreSQL vs. MySQL GROUP BY: How to Achieve MySQL's Grouping Behavior in PostgreSQL?

Perbezaan dalam GROUP BY antara PostgreSQL dan MySQL

Terdapat perbezaan dalam sintaks GROUP BY MySQL dan PostgreSQL, yang sering membawa kepada ralat seperti "Lajur X mesti muncul dalam klausa GROUP BY".

KUMPULAN MYSQL OLEH tingkah laku

Dalam MySQL, pertanyaan berikut akan mengembalikan satu baris untuk setiap nilai unik dalam lajur tarikh buku:

<code class="language-sql">SELECT `availables`.*
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')
GROUP BY availables.bookdate
ORDER BY availables.updated_at</code>

KUMPULAN MENGIKUT keperluan untuk PostgreSQL

Walau bagaimanapun, dalam PostgreSQL, lajur yang tidak disertakan secara eksplisit dalam klausa GROUP BY atau digunakan dalam fungsi agregat mestilah sebahagian daripada kunci utama. Dalam pertanyaan di atas, availables.id tidak disertakan dalam GROUP BY mahupun digunakan dalam pengagregatan, sekali gus menyebabkan ralat.

Simulasikan tingkah laku MySQL

Untuk mensimulasikan tingkah laku MySQL GROUP BY dalam PostgreSQL, anda boleh menggunakan DISTINCT ON dan bukannya GROUP BY:

<code class="language-sql">SELECT DISTINCT ON (availables.bookdate) availables.*
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.bookdate, availables.updated_at</code>

DISTINCT ON memastikan keunikan lajur yang ditentukan sambil mengekalkan susunan yang dinyatakan dalam klausa ORDER BY. Sintaks ini mensimulasikan keupayaan MySQL untuk mengembalikan satu baris rekod dengan nilai unik dalam lajur tarikh buku.

Atas ialah kandungan terperinci PostgreSQL lwn MySQL GROUP OLEH: Bagaimana Mencapai Gelagat Pengelompokan MySQL dalam PostgreSQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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