Perbezaan antara klausa WHERE dan HAVING dalam SQL: Gambaran keseluruhan komprehensif
Dalam dunia SQL, klausa WHERE dan HAVING memainkan peranan penting dalam menapis dan memilih data. Walau bagaimanapun, terdapat perbezaan penting antara kedua-dua klausa ini yang sering membawa kepada kekeliruan. Mari kita terokai perbezaan antara WHERE dan HAVING untuk menjelaskan kekaburan ini.
WHERE and HAVING: metafora
Bayangkan sebuah pasar raya dan anda ingin membeli epal. Klausa WHERE boleh disamakan dengan pintu masuk ke kedai, di mana anda menetapkan syarat untuk mengecilkan pilihan awal anda. Contohnya, WHERE Color = 'Hijau' akan memastikan anda hanya mempertimbangkan epal hijau.
Sebaliknya, klausa HAVING adalah seperti pemeriksaan kawalan kualiti yang anda lakukan selepas memetik epal. Anda boleh mengesahkan bahawa bilangan epal yang anda pilih melebihi sepuluh dengan menyatakan HAVING Count(Epal) >
Perbezaan utama: Pengagregatan
Perbezaan asas antara WHERE dan HAVING ialah hubungannya dengan fungsi agregat. WHERE beroperasi sebelum pengagregatan, manakala HAVING beroperasi selepas pengagregatan.
Contoh dengan pengagregatan
Pertimbangkan pertanyaan berikut:
<code class="language-sql">SELECT City, COUNT(1) AS TotalAddresses FROM Address WHERE State = 'MA' GROUP BY City HAVING COUNT(1) > 5</code>
Dalam kes ini, WHERE mengehadkan baris kepada baris yang mempunyai State = 'MA' sebelum dikumpulkan mengikut Bandar. HAVING kemudian menyemak sama ada setiap bandar mempunyai lebih daripada lima alamat. Oleh itu, pertanyaan mengembalikan bandar di Massachusetts dengan lebih daripada lima alamat.
Di mana DI MANA dan MEMPUNYAI pertindihan
Apabila GROUP BY tidak digunakan, HAVING berkelakuan seperti WHERE. Ini boleh menyebabkan kekeliruan, seperti yang ditunjukkan dalam contoh berikut:
<code class="language-sql">SELECT City, COUNT(1) AS TotalAddresses FROM Address WHERE State = 'MA' HAVING COUNT(1) > 5</code>
Tanpa GROUP BY, HAVING berkelakuan seperti klausa WHERE, tidak termasuk bandar di Massachusetts dengan kurang daripada atau sama dengan lima alamat daripada set hasil.
Kesimpulan
Memahami perbezaan antara WHERE dan HAVING adalah penting untuk penulisan pertanyaan SQL yang berkesan. Dengan menggunakan klausa ini dengan sewajarnya, anda boleh mengecilkan pilihan data anda dan melakukan analisis data yang kompleks. Ingat, WHERE beroperasi sebelum pengagregatan, manakala HAVING menyemak keadaan selepas pengagregatan berlaku.
Atas ialah kandungan terperinci WHERE vs. HAVING dalam SQL: Apakah Perbezaan Utama?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!