SQL Academy · Lektion

Skalära-, rad- och tabellunderfrågor

Använd underfrågor som returnerar ett enda värde, en enda rad eller en hel tabell och placera dem i SELECT-, FROM- och WHERE-satser.

Lektion 1 av 413 steg

Skalära-, rad- och tabellunderfrågor är en gratis lektion i SQL Academy på CoddyKit. Detta är lektion 1 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för SQL Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad är en underfråga?

En underfråga är en SELECT-sats inuti en annan SQL-sats. Den kan vara:

  • En skalär underfråga — returnerar ett enda värde
  • En radunderfråga — returnerar en enda rad
  • En tabellunderfråga — returnerar en relation (används i FROM)

Skalär underfråga

Används överallt där ett enda värde förväntas:

SELECT id, total,
       total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';

Radunderfråga

Returnerar en rad med flera kolumner. Mindre vanligt, och används främst tillsammans med radkonstruktorer:

SELECT *
FROM orders
WHERE (status, country) = (
  SELECT status, country FROM orders WHERE id = 1
);

Tabellunderfråga i FROM

Behandla resultatet av en fråga som en tillfällig tabell:

SELECT country, AVG(big_order_total) AS avg_big
FROM (
  SELECT country, total AS big_order_total
  FROM orders
  WHERE total > 1000
) AS sub
GROUP BY country;

Alias för underfrågor i FROM

Varje underfråga i FROM kräver ett alias i PostgreSQL — även om du inte använder det:

SELECT * FROM (SELECT 1) sub;     -- "sub" required

Underfrågor i WHERE

Filtrera utifrån en härledd mängd värden:

SELECT * FROM users
WHERE id IN (
  SELECT user_id FROM orders WHERE total > 100
);

EXISTS / NOT EXISTS

Kontrollera om en underfråga returnerar minst en rad:

SELECT * FROM users u
WHERE EXISTS (
  SELECT 1 FROM orders o WHERE o.user_id = u.id
);

Underfrågor i SELECT

Bädda in en skalär underfråga som körs per rad:

SELECT id, full_name,
  (SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;

-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.

Underfrågor som uttryck

En skalär underfråga som returnerar mer än en rad ger ett fel:

SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expression

När du bör skriva om till JOIN

Många uttryck av typen ”x IN (SELECT...)” kan skrivas om som JOIN. Välj den form som är tydligast att läsa; moderna frågeplanerare skapar ofta samma plan.

Underfrågor jämfört med CTE:er

Om du behöver samma underfråga två gånger kan du ge den ett namn med en CTE — det tas upp i nästa lektion.

Sammanfattning

Underfrågor finns i tre varianter.

  • Skalära underfrågor i SELECT/WHERE
  • Radunderfrågor i likhetstester
  • Tabellunderfrågor i FROM
  • EXISTS för tester av ”vilken matchning som helst”

Snabbkontroll

Vilken form av underfråga används i en FROM-sats som en tillfällig tabell?

Gratis att börja

Lär dig SQL med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
46
Lektioner
183

Vanliga frågor

Är lektionen ”Skalära-, rad- och tabellunderfrågor” gratis?

Ja – hela texten till ”Skalära-, rad- och tabellunderfrågor” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i SQL Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i SQL Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Skalära-, rad- och tabellunderfrågor”?

Använd underfrågor som returnerar ett enda värde, en enda rad eller en hel tabell och placera dem i SELECT-, FROM- och WHERE-satser. Ni övar på SQL Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig SQL Academy?

Du behöver inga förkunskaper. Utbildningen i SQL Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 1 av 4.

Hur lång tid tar lektionen ”Skalära-, rad- och tabellunderfrågor”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här SQL Academy-lektionen?

Ja. Varje SQL Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Skalära-, rad- och tabellunderfrågor
  2. Korrelaterade kontra icke-korrelaterade underfrågor
  3. Gemensamma tabelluttryck (WITH)
  4. Rekursiva CTE:er för hierarkier
← Tillbaka till SQL Academy