Rumah >pangkalan data >tutorial mysql >Bolehkah Anda Menggunakan HAVING Tanpa GROUP BY dalam SQL?

Bolehkah Anda Menggunakan HAVING Tanpa GROUP BY dalam SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-30 21:15:11857semak imbas

Can You Use HAVING Without GROUP BY in SQL?

HAVING Without GROUP BY: An SQL Anomaly

Dalam SQL standard, adakah mungkin untuk menggunakan klausa HAVING tanpa klausa GROUP BY?

Soalan 1: Pematuhan SQL Standard

contoh pertanyaan yang disediakan:

SELECT *
FROM Book
HAVING NumberOfPages = MAX(NumberOfPages)

bercanggah dengan standard SQL. Mengikut piawaian, semua rujukan lajur dalam klausa HAVING mesti merujuk lajur secara fungsional bergantung pada set lajur yang dinyatakan dalam klausa GROUP BY. Walau bagaimanapun, pertanyaan yang dipersoalkan tidak mempunyai klausa GROUP BY, menjadikannya tidak standard.

Soalan 2: Keserasian MySQL

Pertanyaan berfungsi dalam MySQL hanya dalam keadaan tertentu , di mana baris pertama hasil mengandungi nilai maksimum untuk NumberOfPages. Tingkah laku ini mungkin disebabkan oleh pengendalian MySQL terhadap klausa HAVING jika tiada klausa GROUP BY.

Soalan 3: Justifikasi SQL Standard

Standard melarang klausa HAVING tanpa GROUP Klausa BY kerana ia mewujudkan kesamaran dalam menentukan baris mana yang memenuhi syarat HAVING. Untuk ungkapan jadual yang dipertimbangkan secara keseluruhan, tiada asas logik untuk memilih baris tertentu untuk perbandingan dengan fungsi agregat.

Contoh Pertanyaan SQL Standard yang Sah:

Pertanyaan ini menunjukkan penggunaan klausa HAVING yang sah tanpa GROUP BY klausa:

SELECT 'T' AS result
FROM Book
HAVING MIN(NumberOfPages) < MAX(NumberOfPages);

Pertanyaan sentiasa mengembalikan sama ada satu baris dengan nilai 'T' (menunjukkan buku dengan bilangan halaman yang berbeza) atau set kosong (tiada baris).

Kesimpulan:

Walaupun pertanyaan sampel berfungsi dalam MySQL, ia tidak mematuhi SQL standard. Standard SQL menghalang penggunaan klausa HAVING tanpa klausa GROUP BY untuk mengelakkan kekaburan dan memastikan konsistensi logik.

Atas ialah kandungan terperinci Bolehkah Anda Menggunakan HAVING Tanpa GROUP BY dalam 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