Existe uma maneira de atualizar várias colunas no SQL server da mesma maneira que uma instrução de inserção é usada?
Algo como:
Update table1 set (a,b,c,d,e,f,g,h,i,j,k)=
(t2.a,t2.b,t2.c,t2.d,t2.e,t2.f,t2.g,t2.h,t2.i,t2.j,t2.k)
from table2 t2
where table1.id=table2.id
Ou algo assim, e não assim:
update table set a=t2.a,b=t2.b etc
o que pode ser bastante cansativo de escrever se você tiver mais de 100 colunas.
sql
sql-server
sql-update
Joe
fonte
fonte
Respostas:
A "maneira cansativa" é o SQL padrão e como o RDBMS convencional faz isso.
Com mais de 100 colunas, você provavelmente tem um problema de design ... além disso, existem métodos de mitigação nas ferramentas do cliente (por exemplo, instruções UPDATE de geração) ou usando ORMs
fonte
Tente o seguinte:
Isso deve funcionar na maioria dos dialetos SQL, excluindo o Oracle.
E sim - é muita digitação - é a maneira como o SQL faz isso.
fonte
A
Update table1 set (a,b,c) = (select x,y,x)
sintaxe é um exemplo do uso de construtores de valor de linha, a Oracle suporta isso , o MSSQL não. ( Conectar item )fonte
Sua consulta está quase correta. O T-SQL para isso é:
fonte
Sintaxe
Exemplo
fonte
Você pode tentar isso
fonte
Eu tentei com este caminho e está funcionando bem:
fonte
aqui está um que funciona:
value é a coluna da tabela_2
fonte
Se você precisar digitar isso várias vezes, faça como eu fiz uma vez. Coloque os nomes das suas colunas em linhas na planilha do Excel (anote no final de cada nome de coluna (=), fácil no bloco de notas ++) no lado direito, crie uma coluna para copiar e colar seu valor que corresponderá às novas entradas em cada coluna. À direita deles, em uma coluna independente, coloque as vírgulas conforme
Então você terá que copiar seus valores para a coluna do meio de cada vez, basta colar e executar
Não conheço uma solução mais fácil
fonte
Gostaria de compartilhar com você como abordo esse tipo de pergunta. Meu caso é um pouco diferente, pois o resultado da tabela2 é dinâmico e os números das colunas podem ser menores que os da tabela1. Mas o conceito é o mesmo.
Primeiro, obtenha o resultado da tabela2.
Em seguida, desative-o.
Em seguida, escreva a consulta de atualização usando SQL dinâmico. O código de amostra é escrito para testar 2 tabelas simples - tblA e tblB
PRINT @TSQL
resultado:fonte
Eu fiz isso no MySql e ele atualizou várias colunas em um único registro, então tente isso se você estiver usando o MySql como seu servidor:
No entanto, eu estava codificando no vb.net usando o servidor MySql, mas você pode levá-lo para a sua linguagem de programação favorita, desde que você esteja usando o MySql como seu servidor.
fonte
http://www.w3schools.com/sql/sql_update.asp
fonte
fonte