Nästlade Frågor
Skoladministrationen är nöjd med våra senaste framgångar och ser fram emot att gå vidare.
När de påbörjar sitt sommarlov har vi möjlighet att utforska nya metoder och förbättra våra SQL-kunskaper.
Vårt fokus kommer att ligga på nästlade frågor, ett nyckelbegrepp inom SQL.
Låt oss titta på ett exempel från vårt företagsdatabas. I takt med att företaget växer har vi lagt till en ny department
-tabell. Detta förändrar hur vår databas fungerar.
Låt oss granska den nya tabellens struktur för att se dess roll i vår databas:
Den nya tabellen innehåller avdelningar, deras typer och budgetar. Och i employee
-tabellen, som du kanske minns, finns information om vilken avdelning varje anställd tillhör.
Låt oss överväga ett exempel där vi använder nästlade frågor för att hämta de anställda som arbetar i avdelningar med en budget på $500,000 eller mindre:
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Vi använder ett WHERE
-villkor för att ange att avdelningsnamnet ska finnas i tabellen vi hämtar med den inre frågan.
Låt oss dela upp denna fråga i två separata delar för att se hur den fungerar. Först hämtar vi namnen på avdelningar med en budget på 500 000 dollar eller mindre (vår inre fråga):
123SELECT name FROM department WHERE budget <= 500000
Nu, med tanke på det erhållna resultatet, skriv den andra frågan för att hämta information om de anställda från dessa avdelningar:
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Resultatet av denna fråga kommer att vara samma som den första frågan.
Här är en steg-för-steg-genomgång:
-
Den inre frågan hämtar
names
på de avdelningar vi behöver; -
WHERE
-satsen kontrollerar om dessa avdelningar finns i tabellen från den inre frågan; -
Vi får det resultat vi vill ha.
Här är den grundläggande syntaxen för en inre fråga:
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
När du använder nästlade frågor, tänk på dessa viktiga punkter:
-
Enskilt resultat i underfråga: säkerställ att den nästlade frågan endast returnerar en kolumn. Om den används i en jämförelse bör den helst returnera ett enda värde. Detta är avgörande för operatorer som
=
,>
,<
,>=
,<=
,<>
; -
Datatyper: datatypen för den returnerade kolumnen ska matcha kolumnen du jämför med, för att undvika fel;
-
Optimering: nästlade frågor kan vara långsamma, särskilt om de körs för varje rad i huvudfrågan;
-
Användning av IN-operatorn: nästlade frågor använder ofta
IN
-operatorn för att kontrollera värden i en delmängd. Du kan också använda jämförelseoperatorer för mer komplexa villkor.
1. Vad är en nästlad fråga i SQL?
2. Vilken SQL-operator används ofta med nästlade frågor för att kontrollera värden i en delmängd?
3. Varför är det viktigt att datatypen för kolumnen som returneras av en nästlad fråga matchar kolumnen den jämförs med?
Tack för dina kommentarer!
Fråga AI
Fråga AI
Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal
Awesome!
Completion rate improved to 4
Nästlade Frågor
Svep för att visa menyn
Skoladministrationen är nöjd med våra senaste framgångar och ser fram emot att gå vidare.
När de påbörjar sitt sommarlov har vi möjlighet att utforska nya metoder och förbättra våra SQL-kunskaper.
Vårt fokus kommer att ligga på nästlade frågor, ett nyckelbegrepp inom SQL.
Låt oss titta på ett exempel från vårt företagsdatabas. I takt med att företaget växer har vi lagt till en ny department
-tabell. Detta förändrar hur vår databas fungerar.
Låt oss granska den nya tabellens struktur för att se dess roll i vår databas:
Den nya tabellen innehåller avdelningar, deras typer och budgetar. Och i employee
-tabellen, som du kanske minns, finns information om vilken avdelning varje anställd tillhör.
Låt oss överväga ett exempel där vi använder nästlade frågor för att hämta de anställda som arbetar i avdelningar med en budget på $500,000 eller mindre:
1234567SELECT * FROM employees WHERE department IN ( SELECT name FROM department WHERE budget <= 500000 )
Vi använder ett WHERE
-villkor för att ange att avdelningsnamnet ska finnas i tabellen vi hämtar med den inre frågan.
Låt oss dela upp denna fråga i två separata delar för att se hur den fungerar. Först hämtar vi namnen på avdelningar med en budget på 500 000 dollar eller mindre (vår inre fråga):
123SELECT name FROM department WHERE budget <= 500000
Nu, med tanke på det erhållna resultatet, skriv den andra frågan för att hämta information om de anställda från dessa avdelningar:
12345SELECT * FROM employees WHERE department IN ( 'Marketing', 'Human Resources', 'Finance', 'Customer Service', 'Legal' )
Resultatet av denna fråga kommer att vara samma som den första frågan.
Här är en steg-för-steg-genomgång:
-
Den inre frågan hämtar
names
på de avdelningar vi behöver; -
WHERE
-satsen kontrollerar om dessa avdelningar finns i tabellen från den inre frågan; -
Vi får det resultat vi vill ha.
Här är den grundläggande syntaxen för en inre fråga:
SELECT columns
FROM table_1
WHERE column_name IN (
SELECT column
FROM table_2
other clauses
)
När du använder nästlade frågor, tänk på dessa viktiga punkter:
-
Enskilt resultat i underfråga: säkerställ att den nästlade frågan endast returnerar en kolumn. Om den används i en jämförelse bör den helst returnera ett enda värde. Detta är avgörande för operatorer som
=
,>
,<
,>=
,<=
,<>
; -
Datatyper: datatypen för den returnerade kolumnen ska matcha kolumnen du jämför med, för att undvika fel;
-
Optimering: nästlade frågor kan vara långsamma, särskilt om de körs för varje rad i huvudfrågan;
-
Användning av IN-operatorn: nästlade frågor använder ofta
IN
-operatorn för att kontrollera värden i en delmängd. Du kan också använda jämförelseoperatorer för mer komplexa villkor.
1. Vad är en nästlad fråga i SQL?
2. Vilken SQL-operator används ofta med nästlade frågor för att kontrollera värden i en delmängd?
3. Varför är det viktigt att datatypen för kolumnen som returneras av en nästlad fråga matchar kolumnen den jämförs med?
Tack för dina kommentarer!