Priporočena, 2024

Izbira Urednika

Razlika med mestom in klavzulo v SQL

KJE in HAVING klavzula se v glavnem uporabljata v izjavi SQL poizvedb, nam omogočata, da omejitev kombinacije v razmerju rezultatov z uporabo določenega predikata. Glavna razlika med WHERE in HAVING je ta, da klavzula WHERE določa pogoje za izbiro korakov (vrstic) iz razmerij, vključno s pogoji združevanja, če je to potrebno. Po drugi strani pa člen HAVING določa pogoj za izbrane skupine in ne za posamezne korake.

SQL je kratica za jezik strukturirane poizvedbe ; Je celovit ali deklarativen jezik zbirke podatkov, ki se uporablja za dostop do podatkov iz podatkovnih baz.

Primerjalna tabela

Podlaga za primerjavoKJEHAVING
OsnovnoIzvedeno v vrstnem redu.Izvedeno v operacijah v stolpcih.
Uporabljeno zaEna vrsticaPovzetek vrstic ali skupin.
Prenos podatkovIzbere samo določene podatke iz določenih vrstic glede na stanje.Najprej se celotni podatki prenesejo in nato ločijo glede na pogoj.
Funkcije združevanjaNi mogoče prikazati v členu WHERE.Lahko se pojavi v klavzuli HAVING.
Uporablja se zSELECT in druge stavke, kot sta UPDATE, DELETE ali ena od njih.Ni mogoče uporabiti brez stavka SELECT.
Obnašaj se kotPredfilterPost-filter
GROUP BYPrihaja po tem, kje.Prihaja po.

Opredelitev klavzule

Stavek SQL WHERE se uporablja za opis stanja v času pridobivanja podatkov iz ene tabele ali z združevanjem z več tabelami. Vrne samo določeno vrednost iz tabele, če je izpolnjen podan pogoj. Klavzula WHERE se uporablja za prežemanje zapisov in pridobivanje le potrebnih zapisov.

SQL izvaja tudi logične povezave in, ali pa ne v členu WHERE, ki je znan tudi kot boolean pogoj; pogoj mora biti resničen, če želite priklicati torke. Operandi izrazov logičnih povezav vključujejo primerjalne operatorje, kot so <, <=, >, > =, =, in . Ti primerjalni operatorji primerjajo strune in aritmetične izraze. Uporabite ga lahko v stavku SELECT in v stavkih UPDATE, DELETE .

Vzemimo za primer. Spodnja tabela, imenovana tabela » Prodaja «, je sestavljena iz atributov » Izdelek « in » Količina_ prodajne vrednosti «.

Za izračun skupne prodaje telefonov in zvočnikov se zapiše naslednja poizvedba.

 IZBIRA Izdelek, vsota (Sales_amount) AS Skupaj_Prodaja FROM Prodaja WHERE Izdelek v ('Telefon', 'Zvočniki') GROUP BY Izdelek; 

Naslednji izhod je rezultat, pri katerem se najprej filtrirajo vrstice, se prikličejo vrstice telefona in zvočnikov, nato pa se izvede agregatna funkcija.

Opredelitev klavzule

SQL nudi člen HAVING, ki ga je mogoče uporabiti skupaj s členom GROUP BY . Ta člen HAVING pomaga pri pridobivanju vrednosti za skupine, ki izpolnjujejo določene pogoje. Klavzula WHERE se lahko uporablja tudi v povezavi s členom HAVING med izbiro, WHERE klavzula filtrira posamezno vrstico. Vrstice se nato združijo in izvedejo agregatni izračuni, nazadnje člen HAVING filtrira skupine.

Obnaša se v istem, kot WHERE, če se ključna beseda GROUP BY ne uporablja. Funkcije skupine, kot so min, max, avg, sum in count, se lahko pojavijo le v dveh členih: člen SELECT in HAVING. Zagotavlja pogoj za zapise, ki ustrezajo vsaki vrednosti v skupini atributov. Edini niz zapisov, ki izpolnjuje pogoj, bo prikazan kot rezultat.

Tudi tukaj vzamemo isti primer kot WHERE in upoštevamo isto tabelo ' Sales '. Ko želimo izračunati Total_sales telefonov in zvočnikov s klavzulo HAVING, bomo napisali naslednjo poizvedbo.

 IZBIRA Izdelek, vsota (Sales_amount) AS Skupaj_Prodaja OD PRODAJNE SKUPINE PO IZDELKU OB UPOŠTEVANJU Izdelka v ('telefon', 'Zvočniki'); 

Poizvedba ustvari naslednji izhod, kjer se izdelki najprej najdejo, nato se izvede agregatna funkcija (vsota) in na koncu se filtrirajo za razliko od člena WHERE.

Ko želimo poiskati samo tiste izdelke, pri katerih je skupna prodaja večje od 1000. Poizvedba je lahko napisana kot:

 IZBIRA Izdelek, vsota (Sales_amount) AS Skupaj_Prodaja OD PRODAJNE SKUPINE PO IZDELKIH Znesek (Sales_amount)> 1000; 

Izdelana proizvodnja je:

Tega ni mogoče izvesti z uporabo klavzule WHERE kljub temu, da HAVING in generira sporočilo o napaki, ker klavzule WHERE ni mogoče uporabiti z agregatnimi funkcijami.

Ključne razlike med klavzulo Kje in kdaj

  1. Klavzula WHERE je uporabljena v operacijah vrstic in uporabljena v eni vrstici, medtem ko se člen HAVING uporablja v operacijah stolpcev in se lahko uporablja za povzete vrstice ali skupine.
  2. V členu WHERE se želeni podatki pridobijo glede na uporabljeni pogoj. Nasprotno pa klavzula HAVING priskrbi celotne podatke, nato pa se ločitev opravi v skladu s pogojem.
  3. Agregatne funkcije, kot so min, sum, max, avg, se nikoli ne morejo pojaviti skupaj s členom WHERE. V nasprotju s tem se lahko te funkcije pojavijo v klavzuli HAVING.
  4. Klavzula HAVING ne more uporabiti brez stavka SELECT. Nasprotno pa lahko uporabite WHERE s SELECT, UPDATE, DELETE itd.
  5. Člen WHERE deluje kot predfilter, medtem ko člen HAVING deluje kot post-filter.
  6. Stavek WHERE, ki se uporablja z GROUP BY, je pred skupino GROUP BY. To pomeni, da WHERE filtrira vrstice, preden se izvedejo agregatni izračuni. Po drugi strani HAVING prihaja po GROUP BY, kar pomeni, da se filtrirajo po izvedenih agregatnih izračunih.

Zaključek

KJER in klavzula HAVING deluje na enak način, razen dodatne funkcije, za katero je priljubljen člen HAVING. Klavzula HAVING lahko učinkovito dela z agregatnimi funkcijami, medtem ko WHERE ni mogoče upravljati z agregatnimi funkcijami.

Top