Eu escrevi esta consulta:
UPDATE authors
SET best_seller =
(
SELECT TOP 1 book_id
FROM books
WHERE books.author_id=authors.author_id
ORDER BY copies_sold DESC
)
Eu gostaria SELECT
que fosse avaliado uma vez para cada linha em books
, para que cada registro de autor contenha seu livro mais vendido. Vamos ignorar:
- atuação
- A má ideia de armazenar algo que poderia ser calculado de outras maneiras
- Caso haja empate entre 2 livros do mesmo autor
Você vê algum outro problema com a consulta ou ela funcionará conforme o esperado em todos os casos?
Não vejo nenhum problema com sua consulta em relação à correção da atualização.
Outra maneira de obter os mesmos resultados, usando funções de janela.
Em relação à eficiência, você precisará verificar os planos de execução e testar os dois métodos.