Å ha vs hvor-klausul i SQL

Forskjellen mellom ha- og where-leddet i SQL er at where-leddet kan ot brukes med aggregater, men ha-klausulen kan.

De hvor klausul fungerer på rads data, ikke på aggregerte data. La oss se på tabellen nedenfor 'merker'.

Poengsum for studentkurs

en c1 40

en c2 50

b c3 60

d c1 70

e c2 80

Vurder søket

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

Dette vil velge data rad for rad.

De å ha klausulen fungerer på aggregerte data.

For eksempel utdata fra spørringen nedenfor

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

Student totalt

en 90

b 60

d 70

og 80

Når vi søker å ha i forespørselen ovenfor, får vi

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

HAVING> total>70>

Student totalt

en 90

og 80

Merk: Det er ikke en forhåndsdefinert regel, men i en god del av SQL-spørringene bruker vi WHERE før GROUP BY og HAVING etter GROUP BY. Hvor-klausulen fungerer som en forfilter hvor som å ha som en postfilter.