Perbezaan dan penggunaan klausa WHERE dan HAVING dalam SQL
SQL (Bahasa Pertanyaan Berstruktur) ialah alat yang berkuasa untuk memanipulasi dan mendapatkan semula data pangkalan data. Apabila menggunakan fungsi pengagregatan data seperti COUNT() atau SUM(), adalah penting untuk memahami perbezaan antara klausa HAVING dan WHERE.
Ikhtisar
Klausa WHERE digunakan untuk menapis baris sebelum pengagregatan. Ia menilai keadaan terhadap baris individu dalam jadual.
Klausa HAVING digunakan untuk menapis baris selepas pengagregatan. Ia menilai keadaan berdasarkan data agregat.
Perbezaan utama
Perbezaan paling kritikal antara HAVING dan WHERE ialah masa penapisan mereka:
Contoh
Pertimbangkan contoh berikut:
<code class="language-sql">SELECT City, COUNT(*) AS AddressCount FROM Address WHERE State = 'MA' GROUP BY City</code>
Pertanyaan ini menggunakan klausa WHERE untuk memilih semua alamat yang terletak dalam keadaan "MA" sebelum mengumpulkan. Ia kemudian mengumpulkan hasil mengikut bandar dan mengira bilangan alamat di setiap bandar.
Sekarang, mari ubah suai pertanyaan menggunakan klausa HAVING:
<code class="language-sql">SELECT City, COUNT(*) AS AddressCount FROM Address WHERE State = 'MA' GROUP BY City HAVING AddressCount > 5</code>
Dalam pertanyaan yang diubah suai ini, klausa HAVING digunakan untuk menapis hasil selepas pengagregatan. Ia hanya memilih bandar yang mempunyai lebih daripada 5 alamat.
Bila nak guna WHERE dan HAVING
Dengan memahami perbezaan masa antara WHERE dan HAVING, pembangun boleh mendapatkan semula data daripada pangkalan data dengan cekap berdasarkan keadaan tertentu sebelum atau selepas pengagregatan.
Atas ialah kandungan terperinci WHERE vs. HAVING dalam SQL: Bila Untuk Menggunakan Setiap Klausa untuk Penapisan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!