logo

Att ha vs Where-klausul i SQL

Skillnaden mellan have- och where-satsen i SQL är att where-satsen kan ot användas med aggregat, men ha-satsen kan.

De var klausul fungerar på raddata, inte på aggregerad data. Låt oss överväga nedanstående tabell 'Märken'.



Studentkursresultat

en c1 40

en c2 50



b c3 60

d c1 70

e c2 80



Tänk på frågan

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

Detta skulle välja data rad för rad.

De har klausul fungerar på aggregerade data.

Till exempel utdata från nedanstående fråga

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

Student totalt

en 90

b 60

d 70

och 80

När vi ansöker med ovanstående fråga får vi

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

HAVING>total>70>

Student totalt

en 90

och 80

Obs: Det är inte en fördefinierad regel men i ett stort antal av SQL-frågorna använder vi WHERE före GROUP BY och HAVING efter GROUP BY. Where-klausulen fungerar som en Förfilter där som att ha som en postfilter.