Další tabulky můžete připojit v UPDATE
prohlášení, které umožňuje tuto preferovanou formu:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Tři důvody:
-
Je to bezpečnější. Váš dotaz zapíše hodnotu NULL do každého řádku, kde není nalezen žádný odpovídající autor. To ve vašem případě není důležité, ale může to potenciálně vést ke ztrátě dat u podobných dotazů, kde již máte data ve sloupci, která mají být aktualizována. Moje alternativa nedělá nic, pokud není nalezen žádný odpovídající autor.
-
Je to rychlejší. Výše uvedené pro jednoho. Ale také proto, že korelované poddotazy jako že máš strašně měřítko. Připojování k tabulce je obecně rychlejší, zvláště s více než několika řádky.
-
Je čistší a snadněji se přizpůsobí dalším sloupcům.