Можете да се присъедините към допълнителни таблици в UPDATE
израз, позволяващ тази предпочитана форма:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Три причини:
-
По-безопасно е. Вашата заявка ще напише NULL стойност във всеки ред, където не е намерен съответстващ автор. Това не изглежда да има значение във вашия случай, но потенциално може да доведе до загуба на данни при подобни заявки, където вече имате данни в колоната за актуализиране. Моята алтернатива не прави нищо, ако не бъде намерен съответстващ автор.
-
По-бързо е. Горното за едно. Но също и защото корелирани подзаявки като имаш мащаб ужасно. Обединяването в таблица обикновено е по-бързо, особено при повече от няколко реда.
-
Той е по-изчистен и по-лесно се адаптира към допълнителни колони.