SQL Join Spiegati con Esempi Live

SQL Join Spiegati

SQL Join Spiegati: Inner, Left, Right, Full, Cross, Self | We.Inc

Esegui ogni SQL join su due piccole tabelle di esempio direttamente nel browser e guarda quali righe restano, con la sintassi PostgreSQL per INNER, LEFT, RIGHT, FULL, CROSS e self join.

Un join combina le righe di due tabelle in base a una condizione, di solito chiavi corrispondenti. INNER JOIN tiene solo le righe che corrispondono da entrambi i lati. LEFT JOIN tiene ogni riga della tabella di sinistra e riempie con NULL le colonne di destra mancanti, RIGHT JOIN fa il contrario, FULL JOIN le tiene entrambe e CROSS JOIN abbina ogni riga a ogni riga.

Quali righe tiene ogni join

I diagrammi di Venn sono il modo abituale per insegnare i join, ma nascondono la parte che crea davvero problemi: le righe duplicate e i NULL. Qui sotto trovi due tabelle minuscole, clienti e ordini, con un cliente che non ha mai ordinato e un ordine il cui cliente è stato eliminato. Scegli un join e il risultato viene calcolato nel tuo browser, così vedi esattamente quali righe compaiono e perché.

Domande frequenti

Qual è la differenza tra INNER JOIN e LEFT JOIN?

INNER JOIN scarta le righe senza corrispondenza. LEFT JOIN tiene ogni riga della prima tabella e mette NULL nelle colonne della seconda tabella quando non c'è corrispondenza. Nella demo, Cleo compare nel LEFT JOIN con un ordine vuoto e manca nell'INNER JOIN.

JOIN è uguale a INNER JOIN?

Sì. In PostgreSQL la parola INNER è facoltativa e un JOIN semplice è un inner join. Anche la parola OUTER è facoltativa, quindi LEFT JOIN e LEFT OUTER JOIN significano la stessa cosa.

Perché il mio join ha restituito più righe di quante ne abbia la tabella?

Ogni riga di sinistra compare una volta per ogni riga di destra corrispondente. Un cliente con tre ordini compare tre volte. È il comportamento corretto; aggrega con GROUP BY o fai il join con una subquery già raggruppata se ti serve una riga per cliente.

Cos'è un self join?

Una tabella unita a se stessa con due alias, usata quando le righe puntano ad altre righe della stessa tabella, come i dipendenti e i loro responsabili o i clienti e chi li ha segnalati.

MySQL supporta FULL OUTER JOIN?

PostgreSQL sì, ed è la sintassi mostrata qui. MySQL non ha la parola chiave FULL JOIN; la soluzione abituale è un LEFT JOIN combinato con un RIGHT JOIN tramite UNION.

ON, USING e NATURAL

I filtri degli outer join vengono eseguiti in un ordine diverso

Provalo in PostgreSQL

Incolla questo in psql o in qualsiasi editor SQL per Postgres per ricreare le tabelle di esempio, poi esegui le query della demo.

Tabelle di esempio

L'ordine 104 punta di proposito al cliente 9, che non esiste, così gli outer join hanno qualcosa da mostrare.

Clienti che non hanno mai ordinato

Il LEFT JOIN tiene Cleo con le colonne dell'ordine a NULL, e il filtro IS NULL tiene solo quelle righe.

Playground dei join

Tabelle di esempio usate nella demo

Tipo di join

Risultato: {n} righe

Le celle evidenziate sono state riempite con NULL dall'outer join.

SELF

Inizia gratis · Nessuna carta di credito richiesta

Correlati: Guide

Prodotto

Per chi è

Funzionalità

Risorse

Azienda

Mappa del sito