¿Hay alguna manera de actualizar varias columnas en el servidor SQL de la misma manera que se usa una instrucción de inserción?
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
O algo así, más que así:
update table set a=t2.a,b=t2.b etc
que puede ser bastante pesado escribir si tienes más de 100 columnas.
Respuestas:
La "forma cansada" es el SQL estándar y cómo lo hace RDBMS convencional.
Con más de 100 columnas, lo más probable es que tenga un problema de diseño ... también, existen métodos de mitigación en las herramientas del cliente (por ejemplo, declaraciones UPDATE de generación) o mediante el uso de ORM
fuente
Prueba esto:
Eso debería funcionar en la mayoría de los dialectos de SQL, excluyendo Oracle.
Y sí, es mucho tipeo, es la forma en que SQL hace esto.
fuente
La
Update table1 set (a,b,c) = (select x,y,x)
sintaxis es un ejemplo del uso de constructores de valor de fila, Oracle lo admite , MSSQL no. ( Conectar artículo )fuente
Su consulta es casi correcta. El T-SQL para esto es:
fuente
Sintaxis
Ejemplo
fuente
Puedes probar esto
fuente
Lo intenté de esta manera y funciona bien:
fuente
Aquí hay uno que funciona:
valor es la columna de la tabla_2
fuente
Si necesita volver a escribir esto varias veces, puede hacer lo que hice una vez. Obtenga los nombres de sus columnas en filas en la hoja de Excel (escriba al final de cada nombre de columna (=), que es fácil en Notepad ++) en el lado derecho, haga una columna para copiar y pegar su valor que corresponderá a las nuevas entradas en cada columna Luego, a la derecha de ellos, en una columna independiente, coloque las comas como fueron diseñadas
Luego, tendrá que copiar sus valores en la columna central cada vez, luego simplemente pegar y ejecutar
No conozco una solución más fácil.
fuente
Me gustaría compartir con ustedes cómo abordo este tipo de preguntas. Mi caso es ligeramente diferente ya que el resultado de table2 es dinámico y los números de columna pueden ser menores que el de table1. Pero el concepto es el mismo.
Primero, obtenga el resultado de table2.
A continuación, desenredarlo.
Luego escriba la consulta de actualización usando SQL dinámico. El código de muestra está escrito para probar 2 tablas simples: tblA y tblB
PRINT @TSQL
resultado:fuente
Hice esto en MySql y actualizó varias columnas en un solo registro, así que intente esto si está usando MySql como su servidor:
Sin embargo, estaba codificando en vb.net usando el servidor MySql, pero puede llevarlo a su lenguaje de programación favorito siempre que use MySql como su servidor.
fuente
http://www.w3schools.com/sql/sql_update.asp
fuente
fuente