Perbezaan dan aplikasi klausa HAVING dan WHERE dalam SQL
Terdapat perbezaan utama antara klausa HAVING dan WHERE apabila menggunakan fungsi agregat dan pertanyaan SQL. Mari selami perbezaan mereka untuk meningkatkan kemahiran SQL anda.
MEMILIKI: menapis selepas pengagregatan
HAVING digunakan untuk menggunakan syarat pada nilai agregat selepas operasi agregat selesai. Dalam erti kata lain, ia bertindak sebagai penapis selepas pengagregatan, menyemak sama ada hasil pengagregatan memenuhi syarat tertentu.
Sebagai contoh, pertanyaan berikut mendapatkan semula bandar di Massachusetts (MA) dan bilangan alamat yang sepadan:
<code class="language-sql">SELECT City, COUNT(1) AS CNT FROM Address WHERE State = 'MA' GROUP BY City;</code>
Untuk memperhalusi lagi keputusan dan hanya menunjukkan bandar yang mempunyai lebih daripada lima alamat, gunakan klausa HAVING:
<code class="language-sql">SELECT City, COUNT(1) AS CNT FROM Address WHERE State = 'MA' GROUP BY City HAVING CNT > 5;</code>
DIMANA: Tapis sebelum pengagregatan
Tidak seperti HAVING, WHERE digunakan untuk penapisan sebelum pengagregatan. Ia menilai keadaan sebelum proses pengagregatan. Ini bermakna hanya rekod yang memenuhi syarat WHERE yang ditentukan akan dimasukkan dalam pengagregatan.
Melanjutkan dengan contoh sebelumnya, anda boleh menggunakan klausa WHERE untuk mengehadkan pemilihan kepada bandar di Massachusetts sebelum mengira alamat:
<code class="language-sql">SELECT City, COUNT(1) AS CNT FROM Address WHERE State = 'MA' AND City = 'Boston' GROUP BY City;</code>
Perbandingan ciri utama
特性 | HAVING | WHERE |
---|---|---|
时间 | 聚合之后 | 聚合之前 |
目的 | 聚合后过滤 | 聚合前过滤 |
作用范围 | 应用于聚合值 | 应用于单个记录 |
Ringkasan
HAVING dan WHERE kedua-duanya memainkan peranan penting dalam pengoptimuman pertanyaan SQL. Dengan memahami fungsi dan masa pelaksanaan yang berbeza, anda boleh memperhalusi hasil anda dengan berkesan dan meningkatkan keupayaan analisis data anda.
Atas ialah kandungan terperinci HAVING vs. WHERE dalam SQL: Bila Menggunakan Setiap Klausa untuk Penapisan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!