Rumah >pangkalan data >tutorial mysql >WHERE vs. HAVING dalam SQL: Bila Untuk Menggunakan Setiap Klausa?

WHERE vs. HAVING dalam SQL: Bila Untuk Menggunakan Setiap Klausa?

Patricia Arquette
Patricia Arquetteasal
2025-01-14 17:26:44646semak imbas

WHERE vs. HAVING in SQL: When to Use Each Clause?

Penjelasan terperinci tentang perbezaan antara klausa HAVING dan WHERE dalam SQL

Dalam SQL, kata kunci HAVING dan WHERE digunakan untuk menapis data, tetapi ia mempunyai fungsi yang berbeza. Kedua-duanya digunakan untuk pemilihan bersyarat, tetapi penggunaannya bergantung pada kehadiran atau ketiadaan klausa GROUP BY.

Klausa MANA

Klausa

WHERE dilaksanakan sebelum operasi pengagregatan dan memilih baris tertentu berdasarkan nilainya. Sebagai contoh, pertanyaan berikut mendapatkan semula nama semua pelajar yang berumur lebih daripada 20 tahun:

<code class="language-sql">SELECT Name
FROM Students
WHERE Age > 20;</code>

MENDAPAT klausa

Sebaliknya, klausa HAVING dilaksanakan selepas menggunakan fungsi agregat. Ia menapis kumpulan baris berdasarkan nilai agregat, yang berguna dalam senario di mana anda perlu memeriksa hasil agregat.

Sebagai contoh, pertanyaan berikut mendapatkan purata umur pelajar di setiap bandar, kemudian menapis keputusan untuk menunjukkan bandar yang purata umurnya melebihi 25:

<code class="language-sql">SELECT City, AVG(Age) AS AvgAge
FROM Students
GROUP BY City
HAVING AvgAge > 25;</code>

Perbezaan utama

Perbezaan asas antara

HAVING dan WHERE ialah masa pelaksanaannya. WHERE menapis baris sebelum pengagregatan, manakala HAVING menapis kumpulan selepas pengagregatan. Ini bermakna HAVING digunakan untuk menyemak keadaan pada nilai agregat, manakala WHERE digunakan untuk menyemak keadaan pada nilai baris individu.

Contoh

Pertimbangkan jadual berikut dengan data sampel:

City Age
Boston 22
Boston 25
New York 28
New York 30
Los Angeles 23
Los Angeles 29

Pertanyaan menggunakan WHERE:

<code class="language-sql">SELECT City, COUNT(*) AS Count
FROM Students
WHERE Age > 25;</code>

Output:

City Count
New York 2

Pertanyaan menggunakan HAVING:

<code class="language-sql">SELECT City, COUNT(*) AS Count
FROM Students
GROUP BY City
HAVING COUNT(*) > 1;</code>

Output:

City Count
Boston 2
New York 2

Dalam contoh ini, klausa WHERE mendapatkan semula bilangan pelajar yang berumur lebih daripada 25 tahun, manakala klausa HAVING mendapatkan semula bandar yang mempunyai lebih daripada 1 pelajar di setiap bandar.

Atas ialah kandungan terperinci WHERE vs. HAVING dalam SQL: Bila Untuk Menggunakan Setiap Klausa?. 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