SQL-underfrågor är värdefulla funktioner som gör det möjligt för oss att bädda in en fråga i en annan, vilket lägger till större vikt vid att hämta och manipulera data på ett komplicerat sätt. Den används för att konfigurera tillfälliga tabeller eller mellanliggande resultat som sedan används av den yttre frågan.
Underfråga i FROM-klausulen
FROM-satsen kan användas för att ange ett subquery-uttryck i SQL. Relationen som produceras av underfrågan används sedan som en ny relation på vilken den yttre frågan appliceras för ytterligare operationer. Underfrågor iFROMsats används när vi behöver skapa en temporär datauppsättning som inte finns i någon fysisk tabell. Detta kan vara oerhört användbart när du arbetar med komplexa datauppsättningar.
datumsträng java
Korrelationsvariablerna från tabellerna som refereras till i den yttre frågans FROM-sats kan inte användas direkt i underfrågorna i FROM-satsen. Nedan finns två syntaxer för att använda Subquery i FROM-satsen som används i olika scenarier.
1. Enkel underfråga iFROMKlausul:
VÄLJ kolumn1 kolumn2
FROM (VÄLJ kolumn_x AS C1 kolumn_y FROM tabell WHERE-villkor) SOM subquery_table
WHERE yttre_tillstånd;
2. Underfråga iFROMKlausul medJOIN:
VÄLJ kolumn1 kolumn2
FRÅN (VÄLJ kolumn_x SOM C1 kolumn_y FRÅN tabell WHERE PREDIKAT_X) SOM tabell2
inkluderar c-programmeringJOIN tabell1 PÅ table2.some_column = table1.some_column
VAR PREDIKAT;
Parametrar:
- Underfråga : Den inre frågan inom parentes. Den hämtar data som fungerar som en tillfällig tabell.
- Alias : Underfrågan måste ges ett alias (
subquery_table) som ska refereras till i den yttre frågan. - Yttre fråga : Den yttre frågan kan sedan fungera med den här temporära tabellen som skapats genom att underfrågan tillämpar filter eller utför ytterligare operationer.
Hur underfrågor i FROM-klausulen fungerar
- Utvärdering av underfråga : Underfrågan i from-satsen utvärderas först och sedan lagras resultaten av utvärderingen i en ny temporär relation.
- Yttre fråga : Efter att underfrågan har körts och returnerat en datauppsättning utvärderas den yttre frågan genom att endast välja de tuplar från den temporära relationen som uppfyller predikatet i where-satsen i den yttre frågan.
Exempel på användning av subquery i FROM-satsen
Låt oss diskutera några verkliga exempel för att förstå hur underfrågor i FROM-klausulen fungerar i praktiken. Här har vi två bord Instruktör tabell som innehåller information om instruktörer inklusive deras lön och avdelning. Den andra är Avdelning tabell som innehåller information om olika avdelningar inklusive avdelningens budget.
Instruktör Tabell
| Instruktörs-ID | Namn | Avdelning | Lön |
|---|---|---|---|
| 44547 | Smed | Datavetenskap | 95 000 |
| 44541 | Fakturera | Elektrisk | 55 000 |
| 47778 | Ensam | Humaniora | 44 000 |
| 48147 | Erik | Mekanisk | 80 000 |
| 411547 | Balsam | Informationsteknik | 65 000 |
| 48898 | Jena | Civil | 50 000 |
Avdelning Tabell
| Avdelningens namn | Budget |
|---|---|
| Datavetenskap | 100 000 |
| Elektrisk | 80 000 |
| Humaniora | 50 000 |
| Mekanisk | 40 000 |
| Informationsteknik | 90 000 |
| Civil | 60 000 |
Exempel 1: Hitta alla professorer vars lön är större än den genomsnittliga budgeten för alla institutioner.
I det här exemplet kommer vi att använda en underfråga i FROM-satsen för att beräkna den genomsnittliga budgeten för alla avdelningar och sedan göra jämförelsen med instruktörernas löner.
byta java-programmering
Fråga:
lägg till i array java
SELECT I.InstructorID I.Name I.Department I.Salary
FROM (SELECT AVG(Budget) AS averageBudget FROM Department) AS BUDGET
Instructor AS I
WHERE I.Salary > BUDGET.averageBudget;
Produktion
| Instruktörs-ID | Namn | Avdelning | Lön |
|---|---|---|---|
| 44547 | Smed | Datavetenskap | 95 000 |
| 48147 | Erik | Mekanisk | 80 000 |
Förklaring:
- Den genomsnittliga budgeten för alla avdelningar från avdelningsrelationen är 70 000.
- Erik och Smith är de enda instruktörerna i instruktörsrelationen vars lön är över 70 000 och därför finns i outputrelationen.
Varför använda underfrågor i FROM-klausulen?
Det finns olika fördelar med att använda Subqueries i FROM-satsen enligt nedan:
- Förenkling : De kan förenkla komplexa frågor genom att dela upp dem i mindre mer hanterbara delar. Du behöver inte skapa tillfälliga tabeller uttryckligen i din databas.
- Förbättrad läsbarhet : Genom att använda underfrågor i FROM-satsen gör frågan mer läsbar eftersom den delas > Flexibilitet : Med hjälp av undersökningar kan du utföra operationer som annars skulle vara obekväma som aggregeringar eller filtrering med respekt för andra datamängder utan att skapa mellantabeller.
Slutsats
Underfrågor i FROM-satsen gör det möjligt för oss att definiera tillfälliga resultatuppsättningar som kan användas av yttre frågor. De gör komplexa SQL-operationer enklare förbättrar frågeläsbarheten och ger flexibilitet i datafiltrering och aggregering. Att veta hur man använder underfrågor inom FROM-klausulen är en grundläggande färdighet för alla SQL-utövare särskilt när de hanterar komplicerade databaser eller när du måste utföra komplex dataanalys.
Skapa frågesport