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
Lepaskan: 2025-01-11 08:24:42
asal
812 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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