Rumah > pangkalan data > tutorial mysql > Bolehkah Klausa HAVING Digunakan Tanpa Klausa GROUP BY dalam Standard SQL?

Bolehkah Klausa HAVING Digunakan Tanpa Klausa GROUP BY dalam Standard SQL?

Linda Hamilton
Lepaskan: 2025-01-04 03:18:38
asal
1013 orang telah melayarinya

Can a HAVING Clause Be Used Without a GROUP BY Clause in Standard SQL?

HAVING Without GROUP BY

Menurut standard SQL, klausa HAVING biasanya digunakan bersama dengan klausa GROUP BY untuk menapis kumpulan baris berdasarkan pengiraan agregat yang dilakukan pada kumpulan tersebut. Walau bagaimanapun, sesetengah sistem pangkalan data membenarkan klausa HAVING digunakan tanpa GROUP BY.

Soalan:

Adakah mungkin untuk menggunakan klausa HAVING tanpa GROUP BY mengikut SQL standard?

Jawapan:

Ya, adalah mungkin untuk menggunakan klausa HAVING tanpa GROUP BY dalam Standard SQL. Walau bagaimanapun, tingkah laku pertanyaan sedemikian berbeza-beza bergantung pada sistem pangkalan data yang digunakan.

Gelagat MySQL:

Dalam MySQL, klausa HAVING tanpa GROUP BY dibenarkan, dengan syarat bahawa baris pertama set hasil mempunyai nilai maksimum untuk lajur agregat. Tingkah laku ini berlepas daripada standard SQL, yang secara amnya memerlukan klausa GROUP BY dengan kehadiran klausa HAVING.

Tafsiran Standard SQL:

Standard SQL mentakrifkan MEMPUNYAI klausa sebagai bertindak atas agregat yang dikira ke atas set hasil yang dihasilkan oleh klausa GROUP BY. Tanpa klausa GROUP BY, menjadi tidak jelas baris mana yang dirujuk oleh klausa HAVING.

Oleh itu, menurut standard SQL, klausa HAVING tanpa GROUP BY tidak sah sepenuhnya. Walau bagaimanapun, sesetengah sistem pangkalan data, seperti MySQL, mungkin membenarkan pertanyaan sedemikian atas sebab keserasian.

Contoh SQL Standard yang Sah:

SELECT 'T' AS result
FROM Book
HAVING MIN(NumberOfPages) < MAX(NumberOfPages);
Salin selepas log masuk

Pertanyaan ini sah Standard SQL dan akan mengembalikan satu baris dengan lajur yang mengandungi nilai 'T' jika terdapat buku dengan nombor yang berbeza halaman.

Kesimpulan:

Walaupun menggunakan klausa HAVING tanpa GROUP BY mungkin mudah dalam senario tertentu, adalah penting untuk ambil perhatian bahawa tingkah laku pertanyaan sedemikian tidak diseragamkan dan mungkin berbeza antara sistem pangkalan data. Untuk keserasian merentas pangkalan data yang boleh dipercayai, disyorkan untuk menggunakan GROUP BY bersama HAVING apabila menapis pengiraan agregat.

Atas ialah kandungan terperinci Bolehkah Klausa HAVING Digunakan Tanpa Klausa GROUP BY dalam Standard SQL?. 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