logo

Have vs Where-klausul i SQL

Forskellen mellem have- og where-klausulen i SQL er, at where-klausulen kan ot bruges med aggregater, men have-klausulen kan.

Det hvor klausul fungerer på rækkens data, ikke på aggregerede data. Lad os overveje nedenstående tabel 'Mærker'.



Kursusresultat for studerende

en c1 40

en c2 50



b c3 60

d c1 70

e c2 80



Overvej forespørgslen

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

Dette ville vælge data række for række.

Det at have klausul fungerer på aggregerede data.

For eksempel output af nedenstående forespørgsel

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

Elev i alt

en 90

b 60

d 70

og 80

Når vi ansøger at have i ovenstående forespørgsel, får vi

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

HAVING>total>70>

Elev i alt

en 90

og 80

Bemærk: Det er ikke en foruddefineret regel, men i en lang række af SQL-forespørgslerne bruger vi WHERE før GROUP BY og HAVING efter GROUP BY. Hvor-klausulen fungerer som en forfilter hvor som at have som en post filter.