Sottoquery scalari, di riga e di tabella
Usi sottoquery che restituiscono un singolo valore, una singola riga o un’intera tabella e le inserisca nelle clausole SELECT, FROM e WHERE
Sottoquery scalari, di riga e di tabella è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento SQL Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso SQL Academy include 4 lezioni in totale.
Che cos'è una sottoquery?
Una sottoquery è una SELECT all'interno di un'altra istruzione SQL. Può essere:
- Una sottoquery scalare — restituisce un singolo valore
- Una sottoquery di riga — restituisce una singola riga
- Una sottoquery di tabella — restituisce una relazione (usata in FROM)
Sottoquery scalare
Usata ovunque sia previsto un singolo valore:
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';Sottoquery di riga
Restituisce una riga con più colonne. È meno comune e viene usata soprattutto con i costruttori di riga:
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);Sottoquery di tabella in FROM
Tratti il risultato di una query come una tabella temporanea:
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;Assegnare alias alle sottoquery in FROM
Ogni sottoquery in FROM richiede un alias in PostgreSQL, anche se non lo utilizza:
SELECT * FROM (SELECT 1) sub; -- "sub" requiredSottoquery in WHERE
Filtri in base a un insieme derivato di valori:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
Verifichi se una sottoquery restituisce almeno una riga:
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Sottoquery in SELECT
Incorpori una sottoquery scalare per ogni riga:
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.Sottoquery come espressioni
Una sottoquery scalare che restituisce più di una riga genera un errore:
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionQuando riscrivere usando JOIN
Molte espressioni «x IN (SELECT...)» possono essere riscritte come JOIN. Scelga la forma più chiara: i planner moderni spesso producono lo stesso piano.
Sottoquery vs CTE
Se deve usare la stessa sottoquery due volte, le dia un nome con una CTE: l'argomento verrà trattato nella lezione successiva.
Riepilogo
Le sottoquery hanno tre varianti.
- Scalare in SELECT/WHERE
- Di riga nei test di uguaglianza
- Di tabella in FROM
- EXISTS per verificare «qualsiasi corrispondenza»
Verifica rapida
Quale forma di sottoquery viene usata all'interno di una clausola FROM come tabella temporanea?
Domande Frequenti
La lezione «Sottoquery scalari, di riga e di tabella» è gratuita?
Sì — il testo completo di «Sottoquery scalari, di riga e di tabella» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso SQL Academy, passa a CoddyKit PRO. Il corso SQL Academy include 4 lezioni in totale.
Cosa imparerò in «Sottoquery scalari, di riga e di tabella»?
Usi sottoquery che restituiscono un singolo valore, una singola riga o un’intera tabella e le inserisca nelle clausole SELECT, FROM e WHERE Eserciti SQL Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare SQL Academy?
Non è richiesta alcuna esperienza precedente. SQL Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Sottoquery scalari, di riga e di tabella»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione SQL Academy?
Sì. Ogni lezione SQL Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Sottoquery scalari, di riga e di tabella
- Sottoquery correlate e non correlate
- Espressioni di tabella comuni (WITH)
- CTE ricorsive per le gerarchie