Du kan deltage i yderligere tabeller i en UPDATE
erklæring, der giver mulighed for denne foretrukne form:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Tre grunde:
-
Det er mere sikkert. Din forespørgsel vil skrive en NULL-værdi i hver række, hvor der ikke findes nogen matchende forfatter. Det ser ikke ud til at have nogen betydning i dit tilfælde, men det kan potentielt føre til datatab i lignende forespørgsler, hvor du allerede har data i kolonnen, der skal opdateres. Mit alternativ gør intet, hvis der ikke findes en matchende forfatter.
-
Det er hurtigere. Ovenstående for en. Men også fordi korrelerede underforespørgsler som om du har en frygtelig skala. Deltagelse i en tabel er generelt hurtigere, især med mere end et par rækker.
-
Det er renere og nemmere at tilpasse til yderligere kolonner.