Tentando executar uma atualização, mas quero percorrê-la, pois são muitos dados e não quero explodir tudo de uma vez.
No oracle é um pouco mais fácil selecionar as linhas que eu quero porque você pode incluir na WHERE
cláusula, mas no T-SQL você inclui no arquivo select
. Eu estou querendo escrever algo ao longo das linhas deste:
Update Instances
set thing = 'new thing'
Where rownum<500
Basicamente quero fazer 500 por vez, essa sintaxe é possível no TSQL?
Dê uma olhada no MS Docs sobre isso:
Ou
Ou você pode atualizar a tabela derivada diretamente sem uma junção:
Um exemplo dessa abordagem pode ser encontrado em dbfiddle .
Você pode usar
SET ROWCOUNT xxx
para limitar o número de linhas afetadas pela instrução de atualização.Algo assim:
Se seu banco de dados estiver configurado para um modelo de recuperação simples, isso não exigirá uma grande quantidade de espaço de log. No entanto, se o seu banco de dados estiver no modelo de recuperação total, você provavelmente desejará fazer backups de log periodicamente enquanto isso estiver ocorrendo.
Microsoft Docs para
SET ROWCOUNT
informar que é uma configuração obsoleta:Dito isto, não está na lista de recursos removidos neste momento.
Parece que isso já foi respondido agora que dou outra olhada.
Como posso atualizar os 100 principais registros no SQL Server?
Com a peça chave que eu perdi foi o parêntese de 500 necessidades.
Você pode usar uma expressão de tabela comum com ROW_NUMBER,
ORDER BY (SELECT NULL)
indica que você não se importa com o pedido real.