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
Lepaskan: 2024-12-30 21:15:11
asal
861 orang telah melayarinya

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

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

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!

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