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

Adakah Menggunakan HAVING Without GROUP BY Standard SQL?

DDD
Lepaskan: 2024-12-31 00:12:26
asal
177 orang telah melayarinya

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

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

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!

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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan