SQL Server-subquery

Samenvatting: in deze tutorial leert u over de SQL Server-subquery en hoe u de subquery kunt gebruiken voor het opvragen van gegevens.

Inleiding tot SQL Server-subquery

Een subquery is een query die is genest in een andere instructie, zoals SELECT, INSERT, UPDATE, of DELETE.

Laten we het volgende voorbeeld bekijken.

Beschouw de orders en customers tabellen uit de voorbeelddatabase.

De volgende instructie laat zien hoe je een subquery gebruikt in de WHERE -clausule van een SELECT statement om de verkooporders te vinden van de klanten die zich bevinden in New York:

Hier is het resultaat:

In dit voorbeeld is de volgende instructie een subquery:

Code language: SQL (Structured Query Language) (sql)

Merk op dat je altijd de SELECT query van een subquery tussen haakjes ().

Een subquery wordt ook wel een inner query of inner select genoemd, terwijl de instructie die de subquery bevat een buitenste selectie of buitenste vraag:

SQL De server voert het bovenstaande voorbeeld van de hele query als volgt uit:

Ten eerste voert het de subquery uit om een lijst met klantidentificatienummers te krijgen van de klanten die zich in New York bevinden.

Code language: SQL (Structured Query Language) (sql)

Ten tweede vervangt SQL Server klantidentificatienummers die worden geretourneerd door de subquery in de IN -operator en voert de buitenste query uit om de uiteindelijke resultatenset te krijgen.

Zoals je kunt s ee, door de subquery te gebruiken, kunt u twee stappen combineren. Door de subquery is het niet meer nodig om de klantidentificatienummers te selecteren en deze in de buitenste query te pluggen. Bovendien wordt de query zelf automatisch aangepast wanneer de klantgegevens veranderen.

Nest-subquery

Een subquery kan worden genest in een andere subquery. SQL Server ondersteunt maximaal 32 nesten. Beschouw het volgende voorbeeld:

Ten eerste, SQL Server voert de volgende subquery uit om een lijst met merkidentificatienummers op te halen van de merken Strider en Trek:

Ten tweede berekent SQL Server de gemiddelde prijslijst van alle producten die aan die merken.

Code language: SQL (Structured Query Language) (sql)

Ten derde vindt SQL Server de producten waarvan de catalogusprijs hoger is dan de gemiddelde catalogusprijs van alle producten met de Strider of Trek brand.

SQL Server-subquerytypen

U kunt een subquery op veel plaatsen gebruiken:

  • In plaats van een uitdrukking
  • Met IN of NOT IN
  • Met ANY of ALL
  • Met EXISTS of NOT EXISTS
  • In UPDATE, DELETE, of INSERT statement
  • In de FROM clausule

SQL Server-subquery wordt gebruikt in plaats van een uitdrukking

Als een subquery een enkele waarde retourneert, kan deze overal worden gebruikt waar een uitdrukking wordt gebruikt.

In het volgende voorbeeld wordt een subquery gebruikt als een kolomexpressie genaamd max_list_price in een SELECT instructie.

SQL Server-subquery wordt gebruikt met IN-operator

Een subquery die wordt gebruikt met de IN operator retourneert een set van nul of meer waarden. Nadat de subquery waarden heeft geretourneerd, maakt de buitenste query er gebruik van.

Met de volgende query worden de namen gevonden van alle mountainbikes en racefietsenproducten die de Bike Stores verkopen.

Deze zoekopdracht wordt in twee stappen geëvalueerd:

  1. Eerst retourneert de innerlijke zoekopdracht een lijst met categorie-identificatienummers die overeenkomen met de namen Mountain Bikes en code Racefietsen.
  2. Ten tweede worden deze waarden vervangen door de buitenste zoekvraag die de productnamen met het categorie-identificatienummer overeenkomt met een van de waarden in de lijst.

SQL Server-subquery wordt gebruikt met ELKE operator

De subquery wordt geïntroduceerd met de ANY -operator heeft de volgende syntaxis:

Code language: SQL (Structured Query Language) (sql)

Ervan uitgaande dat de subquery een lijst met waarden v1, v2,… vn retourneert. De ANY operator retourneert TRUE als een van een vergelijkingspaar (scalar_expression, vi) evalueert naar TRUE; anders retourneert het FALSE.

Met de volgende zoekopdracht worden bijvoorbeeld de producten gevonden waarvan de catalogusprijzen groter zijn dan of gelijk zijn aan de gemiddelde catalogusprijs van een productmerk .

Voor elk merk is de subquery vindt de maximale catalogusprijs. De buitenste query gebruikt deze maximale prijzen en bepaalt welke catalogusprijs van een afzonderlijk product hoger is dan of gelijk is aan de maximale catalogusprijs van een merk.

SQL Server-subquery wordt gebruikt met de operator ALL

De ALL operator heeft dezelfde syntaxis als de ANY operator:

Code language: SQL (Structured Query Language) (sql)

De ALL operator retourneert TRUE als alle vergelijkingsparen (scalar_expression, vi) evalueren als TRUE; anders retourneert het FALSE.

Met de volgende zoekopdracht worden de producten gevonden waarvan de catalogusprijs groter is dan of gelijk is aan de gemiddelde catalogusprijs die wordt geretourneerd door de subquery:

SQL Server-subquery wordt gebruikt met EXISTS of NIET EXISTS

Het volgende illustreert de syntaxis van een subquery die is geïntroduceerd met de EXISTS operator:

Code language: SQL (Structured Query Language) (sql)

De EXISTS operator retourneert TRUE als de subquery resultaten retourneert; anders retourneert het FALSE.

Aan de andere kant is de NOT EXISTS het tegenovergestelde van de EXISTS operator.

Met de volgende zoekopdracht worden de klanten gevonden die in 2017 producten hebben gekocht:

Als u de NOT EXISTS gebruikt in plaats van EXISTS kunt u de klanten vinden die in 2017 geen producten hebben gekocht.

SQL Server-subquery in de FROM-component

Stel dat u het gemiddelde wilt vinden van de som van de bestellingen van al het verkooppersoneel. Om dit te doen, kunt u eerst het aantal bestellingen per staf vinden:

Vervolgens kunt u de functie AVG() toepassen op deze resultatenset. Aangezien een query een resultatenset retourneert die eruitziet als een virtuele tabel, kunt u de hele query in de FROM -clausule van een andere query als volgt plaatsen:

De zoekopdracht die u in de FROM clausule moet een tabelalias hebben. In dit voorbeeld hebben we de t gebruikt als de tabelalias voor de subquery. Om tot het eindresultaat te komen voert SQL Server de volgende stappen uit:

  • Voer de subquery uit in de FROM clausule.
  • Gebruik het resultaat van de subquery en voer de buitenste query uit.

In deze tutorial heb je geleerd over het SQL Server-subqueryconcept en hoe je verschillende typen subquerys kunt gebruiken om gegevens op te vragen.

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *