Rumah > pangkalan data > tutorial mysql > WHERE vs. HAVING: Bilakah Anda Harus Menggunakan Setiap Klausa untuk Mencari Data Agregat?

WHERE vs. HAVING: Bilakah Anda Harus Menggunakan Setiap Klausa untuk Mencari Data Agregat?

Barbara Streisand
Lepaskan: 2025-01-21 09:41:07
asal
909 orang telah melayarinya

WHERE vs. HAVING: When Should You Use Each Clause to Find Aggregated Data?

SQL: HAVING vs. WHERE – Menapis Data Agregat

Artikel ini menunjukkan perbezaan utama antara fasal WHERE dan HAVING dalam SQL, terutamanya apabila bekerja dengan data agregat. Kami akan menggunakan contoh mencari pensyarah yang mempunyai pengkhususan terbanyak. Klausa WHERE sahaja tidak mencukupi untuk tugasan ini; klausa HAVING adalah perlu.

Memahami Perbezaan

Klausa WHERE menapis baris individu sebelum pengumpulan berlaku. Ia menggunakan syarat untuk rekod individu dalam jadual. Sebaliknya, klausa HAVING menapis selepas pengumpulan, beroperasi pada fungsi agregat seperti COUNT, SUM, AVG dan MIN. Ini penting apabila menapis berdasarkan hasil pengagregatan, seperti dalam contoh pengkhususan pensyarah kami.

Amalan Terbaik

Untuk kejelasan dan kecekapan, peraturan umum ialah menggunakan WHERE sebelum GROUP BY dan HAVING selepas GROUP BY. Pendekatan ini memudahkan pembinaan pertanyaan dan meningkatkan kebolehbacaan.

Pertanyaan Dioptimumkan

Pertanyaan berikut menggunakan gabungan ANSI dan klausa HAVING untuk mengenal pasti pensyarah dengan bilangan pengkhususan maksimum dengan cekap:

<code class="language-sql">SELECT  L.LectID, Fname, Lname
FROM Lecturers L
JOIN Lecturers_Specialization S ON L.LectID = S.LectID
GROUP BY L.LectID, Fname, Lname
HAVING COUNT(S.Expertise) >= ALL
(SELECT COUNT(Expertise) FROM Lecturers_Specialization GROUP BY LectID)</code>
Salin selepas log masuk

Pertanyaan yang disemak ini menghapuskan keperluan untuk klausa WHERE sebagai syarat cantum theta, yang membawa kepada pertanyaan yang lebih lancar dan cekap.

Atas ialah kandungan terperinci WHERE vs. HAVING: Bilakah Anda Harus Menggunakan Setiap Klausa untuk Mencari Data Agregat?. 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