Rumah >pangkalan data >tutorial mysql >Adakah Menggunakan HAVING Without GROUP BY Standard SQL?

Adakah Menggunakan HAVING Without GROUP BY Standard SQL?

DDD
DDDasal
2024-12-31 00:12:26191semak imbas

Is Using HAVING Without GROUP BY Standard SQL?

MENDAPAT Tanpa KUMPULAN OLEH: Pematuhan SQL Standard

Struktur pertanyaan yang dibentangkan dalam soalan:

SELECT *
FROM Book
HAVING NumberOfPages = MAX(NumberOfPages)

menimbulkan kebimbangan mengenai kesahihannya mengikut standard SQL. Pertanyaan menggunakan klausa HAVING tanpa klausa GROUP BY yang sepadan.

SQL Standard mentakrifkan klausa HAVING adalah sah jika syarat cariannya memenuhi kriteria tertentu. Kriteria ini termasuk bergantung secara fungsi pada lajur yang dirujuk dalam klausa GROUP BY atau menjadi rujukan luar.

Dalam pertanyaan yang diberikan, tiada klausa GROUP BY. Oleh itu, keadaan carian NumberOfPages = MAX(NumberOfPages) tidak memenuhi kriteria yang ditetapkan, kerana tiada pergantungan fungsi yang jelas bagi NumberOfPages pada mana-mana kumpulan tertentu.

Untuk mematuhi standard, pertanyaan perlu diubah suai untuk memasukkan klausa GROUP BY, seperti:

SELECT *
FROM Book
GROUP BY BookId
HAVING NumberOfPages = MAX(NumberOfPages)

Dalam pertanyaan yang disemak ini, KUMPULAN MENGIKUT klausa membahagikan data mengikut BookId, mewujudkan kumpulan yang berbeza untuk setiap buku. Klausa HAVING kini menjadi sah, kerana ia beroperasi pada kumpulan ini, menyemak sama ada mana-mana kumpulan mengandungi baris dengan NumberOfPages maksimum.

Adalah penting untuk ambil perhatian bahawa sesetengah sistem pangkalan data, seperti MySQL, mungkin membenarkan pertanyaan sedemikian tanpa klausa GROUP BY, tetapi gelagat ini dianggap sambungan bukan standard.

Atas ialah kandungan terperinci Adakah Menggunakan HAVING Without GROUP BY Standard SQL?. 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