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);
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!