logo

Klavzula Having vs Where v SQL

Razlika med klavzulo having in where v SQL je v tem, da klavzula where ne more ot uporabiti z agregati, lahko pa ima stavek.

The kje klavzula deluje na podatkih vrstice, ne na združenih podatkih. Oglejmo si spodnjo tabelo 'Oznake'.



Študentski rezultat tečaja

a c1 40

c2 50



b c3 60

d c1 70

e c2 80



Razmislite o poizvedbi

SELECT>Student, Score FROM Marks WHERE Score>=40>>

To bi izbralo podatke vrstico za vrstico.

The imeti klavzula deluje na agregiranih podatkih.

Na primer izhod spodnje poizvedbe

SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>

Študent Skupaj

a 90

b 60

d 70

in 80

Ko uporabimo zgornjo poizvedbo, dobimo

SELECT>Student,>SUM>(score) AS>>total>FROM>Marks> GROUP BY>Student>

HAVING>total>70>

Študent Skupaj

a 90

in 80

Opomba: to ni vnaprej določeno pravilo, vendar v precejšnjem številu poizvedb SQL uporabljamo WHERE pred GROUP BY in HAVING za GROUP BY. Klavzula Where deluje kot a predfilter kjer kot imeti kot a post filter.