logo

Skillnaden mellan WHERE och HAVING

WHERE- och HAVING-satserna diskuteras ingående i den här artikeln. De används också för att filtrera poster i SQL-frågor. Skillnaden mellan WHERE- och HAVING-satsen är den vanligaste frågan som ställs under en intervjutid. Den största skillnaden mellan dem är att WHERE-satsen används för att ange ett villkor för filtrering av poster innan några grupperingar görs, medan HAVING-satsen används för att ange ett villkor för filtrering av värden från en grupp. Innan vi gör jämförelsen kommer vi först att känna till dessa SQL klausuler.

VAR kontra HA

VAR Klausul

WHERE-satsen i MySQL används med SELECT , FÖRA IN , UPPDATERING , och RADERA frågor för att filtrera data från tabellen eller relationen. Den beskriver ett specifikt tillstånd vid hämtning av poster från en enda tabell eller flera tabeller med hjälp av JOIN-satsen. Om det angivna villkoret är uppfyllt returnerar det det specifika värdet från tabellen. WHERE-satsen placerar villkor på de valda kolumnerna.

WHERE-satsen i MySQL kan också implementera de logiska kopplingarna OCH , ELLER , och INTE. De är kända som det booleska tillståndet som måste vara Sann för att hämta data. De logiska bindemedelsuttrycken använder jämförelseoperatorerna som deras operander gillar<, ,>=, =, och . Jämförelseoperatorerna används vanligtvis för att jämföra strängar och aritmetiska uttryck.

Följande syntax illustrerar användningen av WHERE-satsen:

 SELECT column_lists, FROM table_name WHERE conditions GROUP BY column_lists; 

Låt oss ta ett exempel för att förstå denna klausul. Anta att vi har en tabell som heter anställda som innehåller följande data:

VAR kontra HA

Om vi ​​vill för att få den anställde vars arbetstid är större än 9 , då kan vi använda uttalandet enligt följande:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9; 

Vi kommer att få utdata nedan där vi kan se personaldetaljer vars arbetstider är större än 9:

vad är en dubbel java
VAR kontra HA

Om vi ​​använder ovanstående fråga med GRUPP AV klausul får vi det annorlunda resultatet:

 mysql&gt; SELECT * FROM employees WHERE working_hour &gt; 9 GROUP BY name; 

Här är utgången:

VAR kontra HA

HA Klausul

HAVING-sats i MySQL används tillsammans med GROUP BY satsen gör det möjligt för oss att ange villkor som filtrerar vilka gruppresultat som visas i resultatet. Den returnerar endast de värden från grupperna i slutresultatet som uppfyller vissa villkor. Vi kan också använda WHERE- och HAVING-satsen tillsammans under urvalet. I det här fallet filtrerar WHERE-satsen först de individuella raderna, sedan grupperas raderna, utför aggregerade beräkningar och till sist filtrerar HAVING-satsen grupperna.

Denna sats ställer villkor för grupper skapade av GROUP BY-satsen. Den beter sig som WHERE-satsen när SQL-satsen inte använder nyckelordet GROUP BY. Vi kan använda aggregerade (grupp)funktioner som SUM , MIN, MAX, AVG och RÄKNA endast med två satser: SELECT och HAVING.

Följande syntax illustrerar användningen av HAVING-satsen:

ta bort npm-cache
 SELECT column_lists, aggregate_function (expression) FROM table_name WHERE conditions GROUP BY column_lists HAVING condition; 

Låt oss ta ett exempel för att förstå denna klausul. Här överväger vi samma tabell anställda för demonstration.

Om vi ​​vill att få den totala arbetstiden för varje anställd vars arbetstid är större än 6 timmar , då kan vi använda uttalandet enligt följande:

 mysql&gt; SELECT name, SUM(working_hour) AS &apos;Total working hours&apos; FROM employees GROUP BY name HAVING SUM(working_hour) &gt; 6; 

Vi kommer att få utdata nedan där vi kan se varje anställds totala arbetstid:

VAR kontra HA

Nyckelskillnader mellan WHERE och HAVING-klausul

Följande punkter förklarar de viktigaste skillnaderna mellan databas och schema:

  • WHERE-satsen filtrerar enskilda rader, medan HAVING-satsen filtrerar grupper istället för en rad åt gången.
  • Vi kan inte använda WHERE-satsen med aggregerade funktioner eftersom den fungerar för att filtrera enskilda rader. Däremot kan HAVING fungera med aggregerade funktioner eftersom det används för att filtrera grupper.
  • Radoperationer hanteras av WHERE-satsdelen, medan HAVING-satsen hanterar kolumnoperationer till sammanfattade rader eller grupper.
  • WHERE kommer före GROUP BY, vilket betyder WHERE-satsfiltrera rader innan du utför aggregerade beräkningar. HAVING kommer efter GROUP BY, vilket innebär att HAVING-satsen filtrerar rader efter att ha utfört aggregerade beräkningar. Följaktligen är HAVING långsammare än WHERE när det gäller effektivitet och bör undvikas när det är möjligt.
  • Vi kan kombinera WHERE- och HAVING-satsen tillsammans i en SELECT-fråga. I det här fallet används WHERE-satsen först för att filtrera enskilda rader. Raderna grupperas sedan, utför aggregerade beräkningar och slutligen används HAVING-satsen för att filtrera grupperna.
  • WHERE-satsen hämtar önskad data baserat på det angivna villkoret. Å andra sidan hämtar HAVING-satsen först hela data, och sedan görs separation baserat på det angivna villkoret.
  • Utan en SELECT-sats kan vi inte använda HAVING-satsen. Omvänt kan vi använda en WHERE med SELECT-, UPDATE- och DELETE-satser.
  • WHERE-satsen är ett förfilter, medan HAVING-satsen är ett efterfilter.

VAR kontra HA Jämförelsediagram

Följande jämförelsediagram förklarar deras huvudsakliga skillnader på ett snabbt sätt:

Jämförelsegrund VAR Klausul HA Klausul
Definition Den används för att utföra filtrering på enskilda rader. Det används för att utföra filtrering på grupper.
Grundläggande Det implementeras i radoperationer. Det implementeras i kolumnoperationer.
Datahämtning WHERE-satsen hämtar specifika data från specifika rader baserat på det angivna villkoret HAVING-satsen hämtar först hela data. Den separerar dem sedan enligt det givna tillståndet.
Aggregerade funktioner WHERE-satsen tillåter inte att arbeta med aggregerade funktioner. HAVING-satsen kan fungera med aggregerade funktioner.
Agera som WHERE-satsen fungerar som ett förfilter. HAVING-satsen fungerar som ett efterfilter.
Används med Vi kan använda WHERE-satsen med SELECT-, UPDATE- och DELETE-satserna. HAVING-satsen kan endast användas med SELECT-satsen.
GRUPP AV GROUP BY-satsen kommer efter WHERE-satsen. GROUP BY-satsen kommer före HAVING-satsen.

Slutsats

I den här artikeln har vi gjort en jämförelse mellan WHERE- och HAVING-satsen. Här drar vi slutsatsen att båda satserna fungerar på samma sätt för att filtrera data, förutom att någon ytterligare funktion gör HAVING-satsen mer populär. Vi kan effektivt arbeta med aggregatfunktioner i HAVING-satsen medan WHERE inte tillåter aggregatfunktioner.