Apakah perbezaan antara di mana dan mempunyai klausa dalam SQL?
Perbezaan utama di mana dan mempunyai masa penapisan: 1. 2. Memiliki menapis keputusan selepas pengelompokan, dan bertindak pada data agregat, dan boleh menggunakan fungsi agregat. Sebagai contoh, apabila menggunakan di mana untuk menyaring pekerja bergaji tinggi dalam pertanyaan, kemudian statistik kumpulan, dan kemudian gunakan untuk menyaring jabatan dengan gaji purata lebih daripada 60,000, perintah kedua tidak dapat diubah. Di mana sentiasa melaksanakan terlebih dahulu untuk memastikan bahawa hanya baris yang memenuhi syarat -syarat yang mengambil bahagian dalam kumpulan, dan mempunyai penapis lebih lanjut output akhir berdasarkan hasil pengumpulan.
Perbezaan antara WHERE
dan HAVING
SQL turun apabila setiap penapis digunakan - terutamanya berhubung dengan kumpulan. Pendek kata:

-
WHERE
penapis baris sebelum dikelompokkan. -
HAVING
kumpulan penapis atau keputusan agregat selepas pengumpulan dilakukan.
Jika anda menggunakan GROUP BY
, itulah di mana perbezaan ini benar -benar penting.

Penapisan sebelum berkumpul di mana
Gunakan WHERE
apabila anda ingin menyempitkan baris mana yang masuk ke dalam proses pengelompokan. Ia berfungsi pada baris individu, bukan nilai agregat.
Contohnya:

Pilih jabatan, kiraan (*) sebagai pekerja_count Dari pekerja Di mana gaji> 50000 Kumpulan oleh jabatan;
Di sini, hanya pekerja yang memperoleh lebih daripada $ 50k dimasukkan sebelum kumpulan pangkalan data mereka mengikut jabatan. Penapisan berlaku lebih awal, jadi ia mempengaruhi jumlah akhir.
Anda tidak boleh menggunakan fungsi agregat seperti COUNT()
, SUM()
, dan lain -lain, di WHERE
klausa - kerana nilai -nilai tersebut tidak wujud pada peringkat pertanyaan tersebut.
Mata Utama:
- Penapis data mentah.
- Tidak boleh merujuk fungsi agregat.
- Berjalan sebelum berkumpul.
Penapisan selepas berkumpul dengan mempunyai
Sebaik sahaja anda telah mengumpulkan data anda menggunakan GROUP BY
, anda mungkin mahu menapis berdasarkan hasil pengagregatan - di sinilah HAVING
langkah -langkah.
Contoh:
Pilih jabatan, kiraan (*) sebagai pekerja_count Dari pekerja Kumpulan oleh jabatan Mempunyai kiraan (*)> 10;
Pertanyaan ini hanya mengembalikan jabatan dengan lebih daripada 10 pekerja. Kiraan dikira terlebih dahulu, kemudian ditapis.
Tidak seperti WHERE
, HAVING
boleh termasuk fungsi agregat. Anda juga boleh merujuk alias lajur yang ditakrifkan dalam SELECT
.
Kegunaan biasa:
- Penapis berdasarkan saiz kumpulan (
COUNT
,SUM
, dll.) - Bandingkan nilai agregat (contohnya,
HAVING AVG(salary) > 60000
) - Gunakan dengan atau tanpa
GROUP BY
Bilakah hendak menggunakan yang mana?
Untuk menentukan di antara WHERE
dan HAVING
, tanya diri anda:
- Adakah saya perlu menapis baris individu sebelum berkumpul? → Gunakan
WHERE
. - Adakah saya perlu menapis kumpulan atau keputusan agregat selepas kumpulan? → Gunakan
HAVING
.
Kadang -kadang kedua -duanya boleh digunakan bersama:
Pilih Jabatan, AVG (Gaji) sebagai AVG_SALARY Dari pekerja Di mana status = 'aktif' Kumpulan oleh jabatan Mempunyai AVG (gaji)> 60000;
Dalam kes ini:
-
WHERE
sempit dataset kepada pekerja aktif sahaja. -
HAVING
penapis selanjutnya kumpulan yang dihasilkan untuk menunjukkan hanya mereka yang mempunyai gaji purata lebih dari $ 60k.
Jadi pada dasarnya, ia adalah mengenai masa: di mana penapis awal, mempunyai penapis lewat - terutamanya berguna selepas agregasi.
Atas ialah kandungan terperinci Apakah perbezaan antara di mana dan mempunyai klausa dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

HQL dan SQL dibandingkan dalam rangka kerja Hibernate: HQL (1. Sintaks berorientasikan objek, 2. Pertanyaan bebas pangkalan data, 3. Keselamatan jenis), manakala SQL mengendalikan pangkalan data secara langsung (1. Piawaian bebas pangkalan data, 2. Boleh laku kompleks pertanyaan dan manipulasi data).

Analisis Kesan Nombor Sambungan MySQL terhadap Prestasi Pangkalan Data Dengan pembangunan aplikasi Internet yang berterusan, pangkalan data telah menjadi alat penyimpanan dan pengurusan data yang penting untuk menyokong sistem aplikasi. Dalam sistem pangkalan data, bilangan sambungan adalah konsep penting, yang berkaitan secara langsung dengan prestasi dan kestabilan sistem pangkalan data. Artikel ini akan bermula dari perspektif pangkalan data MySQL, meneroka kesan bilangan sambungan pada prestasi pangkalan data, dan menganalisisnya melalui contoh kod tertentu. 1. Berapakah bilangan sambungan? Bilangan sambungan merujuk kepada bilangan sambungan klien yang disokong oleh sistem pangkalan data pada masa yang sama Ia juga boleh diuruskan

SQL digunakan untuk berinteraksi dengan pangkalan data MySQL untuk merealisasikan penambahan data, penghapusan, pengubahsuaian, pemeriksaan dan reka bentuk pangkalan data. 1) SQL Melaksanakan operasi data melalui Pilih, Masukkan, Kemas kini, Padam Penyataan; 2) Gunakan pernyataan membuat, mengubah, drop untuk reka bentuk dan pengurusan pangkalan data; 3) Pertanyaan kompleks dan analisis data dilaksanakan melalui SQL untuk meningkatkan kecekapan membuat keputusan perniagaan.

Sebagai profesional data, anda perlu memproses sejumlah besar data dari pelbagai sumber. Ini boleh menimbulkan cabaran kepada pengurusan data dan analisis. Nasib baik, dua perkhidmatan AWS dapat membantu: AWS Glue dan Amazon Athena.

MySQL dan SQL adalah kemahiran penting untuk pemaju. 1.MYSQL adalah sistem pengurusan pangkalan data sumber terbuka, dan SQL adalah bahasa standard yang digunakan untuk mengurus dan mengendalikan pangkalan data. 2.MYSQL menyokong pelbagai enjin penyimpanan melalui penyimpanan data yang cekap dan fungsi pengambilan semula, dan SQL melengkapkan operasi data yang kompleks melalui pernyataan mudah. 3. Contoh penggunaan termasuk pertanyaan asas dan pertanyaan lanjutan, seperti penapisan dan penyortiran mengikut keadaan. 4. Kesilapan umum termasuk kesilapan sintaks dan isu -isu prestasi, yang boleh dioptimumkan dengan memeriksa penyataan SQL dan menggunakan perintah menjelaskan. 5. Teknik pengoptimuman prestasi termasuk menggunakan indeks, mengelakkan pengimbasan jadual penuh, mengoptimumkan operasi menyertai dan meningkatkan kebolehbacaan kod.

Konsep asas dan penggunaan SQL dalam bahasa Go SQL (StructuredQueryLanguage) ialah bahasa yang digunakan khas untuk mengurus dan mengendalikan pangkalan data hubungan. Dalam bahasa Go, kami biasanya menggunakan SQL untuk melaksanakan operasi pangkalan data, seperti menanyakan data, memasukkan data, mengemas kini data, memadam data, dsb. Artikel ini akan memperkenalkan konsep asas dan penggunaan SQL dalam bahasa Go, dengan contoh kod khusus. 1. Sambung ke pangkalan data Dalam bahasa Go, kami boleh menggunakan perpustakaan pihak ketiga untuk menyambung data

MySQL adalah popular kerana prestasi yang sangat baik dan kemudahan penggunaan dan penyelenggaraan. 1. Buat Pangkalan Data dan Jadual: Gunakan perintah Createdatabase dan Createtable. 2. Masukkan dan Data pertanyaan: mengendalikan data melalui InsertInto dan pilih pernyataan. 3. Mengoptimumkan pertanyaan: Gunakan indeks dan terangkan pernyataan untuk meningkatkan prestasi.

SQL adalah bahasa standard untuk menguruskan pangkalan data relasi, manakala MySQL adalah sistem pengurusan pangkalan data yang menggunakan SQL. SQL mentakrifkan cara untuk berinteraksi dengan pangkalan data, termasuk operasi CRUD, sementara MySQL melaksanakan standard SQL dan menyediakan ciri -ciri tambahan seperti prosedur dan pencetus yang disimpan.
