U kunt extra tabellen samenvoegen in een UPDATE
verklaring, rekening houdend met deze voorkeursvorm:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Drie redenen:
-
Het is veiliger. Uw zoekopdracht schrijft een NULL-waarde in elke rij waar geen overeenkomende auteur is gevonden. Dat lijkt in uw geval niet van belang, maar kan mogelijk leiden tot gegevensverlies in vergelijkbare zoekopdrachten waarbij u al gegevens in de te updaten kolom heeft. Mijn alternatief doet niets als er geen overeenkomende auteur wordt gevonden.
-
Het is sneller. Het bovenstaande voor een. Maar ook omdat gecorreleerde subquery's alsof je schaal vreselijk hebt. Deelnemen aan een tabel gaat over het algemeen sneller, vooral met meer dan een paar rijen.
-
Het is schoner en gemakkelijker aan te passen aan extra kolommen.