Puoi unirti a tabelle aggiuntive in un UPDATE
dichiarazione, consentendo questa forma preferibile:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Tre motivi:
-
È più sicuro. La tua query scriverà un valore NULL in ogni riga in cui non viene trovato alcun autore corrispondente. Ciò non ha importanza nel tuo caso, ma può potenzialmente portare alla perdita di dati in query simili in cui hai già dati nella colonna da aggiornare. La mia alternativa non fa nulla se non viene trovato alcun autore corrispondente.
-
È più veloce. Quanto sopra per uno. Ma anche perché sottoquery correlate come se avessi una scala terribilmente. L'unione in una tabella è generalmente più veloce, specialmente con più di poche righe.
-
È più pulito e si adatta più facilmente a colonne aggiuntive.