UPDATE con FROM e aggiornamenti in stile JOIN
Aggiorni le righe usando valori di un’altra tabella con UPDATE ... FROM (PostgreSQL) e l’istruzione standard MERGE
UPDATE con FROM e aggiornamenti in stile JOIN è una lezione SQL Academy gratuita su CoddyKit. Questa è la lezione 3 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.
UPDATE di base
Modificare i valori nelle righe corrispondenti:
UPDATE users SET full_name = 'Alice Adams' WHERE id = 1;Più colonne
Elenco SET separato da virgole:
UPDATE users
SET full_name = 'Alice', last_login = NOW(), visits = visits + 1
WHERE id = 1;Aggiornare molte righe
È sufficiente selezionare più righe con WHERE:
UPDATE orders SET status = 'archived'
WHERE created_at < NOW() - INTERVAL '5 years';UPDATE con subquery
Calcolare il nuovo valore a partire da un'altra query:
UPDATE products
SET review_count = (
SELECT COUNT(*) FROM reviews WHERE reviews.product_id = products.id
);UPDATE … FROM (PostgreSQL)
Aggiornamento in stile JOIN: recuperare i valori da un'altra tabella:
UPDATE products p
SET stock = i.qty
FROM inventory i
WHERE i.product_id = p.id;UPDATE … FROM con più tabelle
L'elenco FROM può includere diverse tabelle:
UPDATE invoices inv
SET tax_rate = r.rate
FROM users u
JOIN rates r ON r.country = u.country
WHERE inv.user_id = u.id;SQL standard: UPDATE … FROM tramite subquery correlata
Equivalente portabile (più lento):
UPDATE products p
SET stock = (SELECT qty FROM inventory i WHERE i.product_id = p.id);MERGE per INSERT/UPDATE/DELETE
PostgreSQL 15+ supporta MERGE per combinare queste operazioni: consultare la lezione su UPSERT.
RETURNING da UPDATE
Ottenere le righe aggiornate in un solo round-trip:
UPDATE orders SET status = 'shipped', shipped_at = NOW()
WHERE id = $1
RETURNING id, status, shipped_at;Aggiornare con CASE
Nuovi valori condizionali:
UPDATE orders
SET status = CASE
WHEN paid_at IS NOT NULL THEN 'paid'
WHEN created_at < NOW() - INTERVAL '24h' THEN 'expired'
ELSE status
END;Attenzione a WHERE mancante
UPDATE users SET active = false; aggiorna OGNI riga. In produzione:
- Eseguire prima un SELECT per verificare il numero di righe
- Racchiudere l'operazione in una transazione e controllare il risultato prima di COMMIT
- Usare
BEGIN; ...; SELECT count(*) FROM users WHERE active = false; ROLLBACK;come simulazione
Prestazioni degli aggiornamenti
Un UPDATE crea una nuova versione della riga e contrassegna quella precedente come non più valida (MVCC). Le tabelle soggette ad aggiornamenti frequenti possono subire bloat; l'argomento è trattato nella lezione su VACUUM/MVCC.
Riepilogo
UPDATE … FROM è l'aggiornamento in stile JOIN che rende semplici le correzioni massicce.
- WHERE sempre: non dimenticarlo mai
- Usare RETURNING per verificare il risultato
- Eseguire i test in una transazione con ROLLBACK
Verifica rapida
Quale sintassi di UPDATE consente di fare riferimento a un'altra tabella in PostgreSQL?
Domande Frequenti
La lezione «UPDATE con FROM e aggiornamenti in stile JOIN» è gratuita?
Sì — il testo completo di «UPDATE con FROM e aggiornamenti in stile JOIN» è 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 «UPDATE con FROM e aggiornamenti in stile JOIN»?
Aggiorni le righe usando valori di un’altra tabella con UPDATE ... FROM (PostgreSQL) e l’istruzione standard MERGE 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 3 di 4.
Quanto tempo richiede la lezione «UPDATE con FROM e aggiornamenti in stile JOIN»?
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
- INSERT con più righe
- UPSERT: ON CONFLICT DO UPDATE (PostgreSQL)
- UPDATE con FROM e aggiornamenti in stile JOIN
- DELETE con USING e pattern sicuri