PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Como insiro em uma tabela de outra tabela combinando valores?


Você pode juntar tabelas adicionais em um UPDATE declaração, permitindo esta forma preferível:
UPDATE books b
SET    author_id = a.author_id
FROM   authors a
WHERE  b.author = a.author_name;

Três razões:

  • É mais seguro. Sua consulta escreverá um valor NULL em cada linha onde nenhum autor correspondente for encontrado. Isso não importa no seu caso, mas pode potencialmente levar à perda de dados em consultas semelhantes em que você já tem dados na coluna a ser atualizado. Minha alternativa não faz nada se nenhum autor correspondente for encontrado.

  • É mais rápido. O acima para um. Mas também porque subconsultas correlacionadas como se você tivesse escala terrivelmente. A junção em uma tabela geralmente é mais rápida, especialmente com mais do que algumas linhas.

  • É mais limpo e mais facilmente adaptado a colunas adicionais.