Junior
Cosa sono le sottoquery in SQL?
sobes.tech AI
Risposta dell'AI
Una sottoquery (o query annidata) in SQL è una query SELECT inserita all'interno di un'altra istruzione SQL (SELECT, INSERT, UPDATE, DELETE, CREATE TABLE). La sottoquery viene eseguita per prima e il suo risultato viene utilizzato dalla query esterna.
-
Utilizzo:
- Nella clausola
WHEREper filtrare i dati. - Nella clausola
FROMcome tabella virtuale (tabella derivata). - Nella clausola
SELECTper mostrare dati aggregati o correlati (sottoquery scalare). - Con gli operatori
IN,EXISTS,ANY,ALL.
- Nella clausola
-
Vantaggi:
- Permettono di eseguire interrogazioni di dati complesse.
- Migliorano la leggibilità delle query rispetto alle join complesse.
- Possono essere usate come fonte di dati.
-
Tipi:
- Scalare: Restituisce un singolo valore (una riga e una colonna).
- Multi-riga: Restituisce una colonna e più righe. Usato con
IN,ANY,ALL. - Multi-colonna: Restituisce più colonne. Usato raramente.
- Correlata: Dipende dalla query esterna e viene eseguita per ogni riga della query esterna.
Esempio di utilizzo in WHERE:
SELECT
order_id,
customer_id,
order_date
FROM
orders
WHERE
customer_id IN (
SELECT
customer_id
FROM
customers
WHERE
city = 'New York'
);
Esempio di utilizzo in FROM:
SELECT
customer_name,
total_orders
FROM (
SELECT
c.customer_name,
COUNT(o.order_id) AS total_orders
FROM
customers c
JOIN
orders o ON c.customer_id = o.customer_id
GROUP BY
c.customer_name
) AS customer_order_counts
WHERE
total_orders > 10;