Puede unir tablas adicionales en un UPDATE
declaración, permitiendo esta forma preferible:
UPDATE books b
SET author_id = a.author_id
FROM authors a
WHERE b.author = a.author_name;
Tres razones:
-
Es más seguro. Su consulta escribirá un valor NULL en cada fila donde no se encuentre un autor coincidente. Eso no parece importar en su caso, pero puede conducir potencialmente a la pérdida de datos en consultas similares en las que ya tiene datos en la columna para actualizar. Mi alternativa no hace nada si no se encuentra un autor coincidente.
-
Es mas rapido. Lo anterior para uno. Pero también porque subconsultas correlacionadas como si tuvieras escala terriblemente. Unirse a una tabla generalmente es más rápido, especialmente con más de unas pocas filas.
-
Es más limpio y más fácil de adaptar a columnas adicionales.