COMO FAZER ESTE UPDATE NO SQL SERVER

JCM0867 09/11/2022 19:36:22
#500756
Boa tarde,

Tenho um dterminado Update:

[txt-color=#0000f0]Update Tabela1
Set Codigo = (Select Row From Tabela2 Where Tabela2.Codigo = Tabela1.Codigo)
[/txt-color]
Tabela1 tem 100 registros e Tabela2 tem 20 registros
Na hora que rodo ele atualiza os 20 registros na tabela1 e deixa codigo=NULL no demais. Parecia tão simples
Como faço que ele atualize só os 20 e não altera os demais.
O que tem de errado no update?

att,
KERPLUNK 10/11/2022 01:26:29
#500758
Tenta assim:

Update Tabela1
Set Codigo = (Select TOP 1 Row From Tabela2 Where Tabela2.Codigo = Tabela1.Codigo)
JCM0867 10/11/2022 12:10:54
#500759
Ficou na mesma, Alterou os 20 e colocou Null no restante.
Fiz até um teste numa coluna nova e deu o mesmo resultado
Até no final ele diz todos registros alterados

KERPLUNK 10/11/2022 12:43:39
#500760
É que falta a cláusula where no seu update:

Update Tabela1
Set Codigo = (Select TOP 1 Row From Tabela2 Where Tabela2.Codigo = Tabela1.Codigo)
Where Codigo is not null


Ou algo do tipo
JCM0867 10/11/2022 13:15:08
#500761
Nada. veja a imagem real. O AluCodigo onde está NULL tinha um número, ele substituiu o que precisava e os que já tinham se foram, viraram NULL.
KERPLUNK 10/11/2022 14:59:11
#500762
Vai ser melhor passar a estrutura das tabelas e o que voce quer fazer...
JCM0867 10/11/2022 17:48:29
#500763
Ai vai ser complicado
MARCELO.TREZE 10/11/2022 19:11:36
#500764
voce vai ter de determinar o que será alterado

exemplo na tabela1 um tem

cod, fruta, quant
1, banana, 3
2, morango, 5
3, mixirica, 7

na tabela 2 vc tem

cod, fruta, quant

1, banana, 2
2, moranga, 3
3, mixirica, 4
4, laranja, 7
5, limão, 12


voce terá de verificar por exemplo se a quantidade de frutas da tabela um for diferente da tabela dois atualizar caso contrário não mexer em nada.

não pode ficar pra alterar o código, pois geralmente o código é fixo

como é difícil voce postar a estrutura seria algo do tipo

algum campo das tabelas deve ser igual e outro que será atualizado deve ser diferente entendeu

usando o exemplo das frutas

Update Tabela1
Set quant= (Select Row From Tabela2 Where Tabela2.Codigo = Tabela1.Codigo and tabela2.quant <> tabela1.quant)



no update acima a tabela2 será atualizado a quantidade entendeu
JCM0867 11/11/2022 12:06:42
#500767
vou fazer diferente, com 4 querys

Cria um Campo NovoCodigo
Popula esta coluna com os Códigos Novos
Copio o NovoCodigo para Codigo where is not Null
Apago a coluna NovoCodigo
Tópico encerrado , respostas não são mais permitidas