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
Lepaskan: 2025-01-14 17:26:44
asal
640 orang telah melayarinya

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

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

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

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

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!

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