una - Actualice varias columnas en SQL
insertar datos en una tabla sql server (12)
Hice esto en MySql y actualizó varias columnas en un solo registro, así que intente esto si está utilizando MySql como su servidor:
"UPDATE creditor_tb SET credit_amount=''" & CDbl(cur_amount) & "''
, totalamount_to_pay=''" & current_total & "'',
WHERE credit_id=''" & lbcreditId.Text & "''".
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.
¿Hay alguna forma de actualizar varias columnas en el servidor SQL de la misma manera que se utiliza 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í, en lugar de algo así:
update table set a=t2.a,b=t2.b etc
lo cual puede ser muy tedioso escribir si tienes más de 100 columnas.
La "manera tediosa" es SQL estándar y cómo lo hacen los RDBMS convencionales.
Con más de 100 columnas, lo más probable es que tenga un problema de diseño ... también, existen métodos atenuantes en las herramientas del cliente (por ejemplo, generación de instrucciones UPDATE) o mediante el uso de ORM
La sintaxis Update table1 set (a,b,c) = (select x,y,x)
es un ejemplo del uso de constructores de valores de fila, Oracle lo admite , MSSQL no. ( Conectar elemento )
Lo intenté de esta manera y está funcionando bien:
UPDATE
Sub2
SET
SLNNOND = Sub.SLNNOND,
Sub2.SLNNONF = Sub.SLNNONF
FROM
#TEMP Sub2
Prueba esto:
UPDATE table1
SET a = t2.a, b = t2.b, .......
FROM table2 t2
WHERE table1.id = t2.id
Eso debería funcionar en la mayoría de los dialectos SQL, excluyendo Oracle.
Y sí, es mucho tipeo, es la forma en que SQL hace esto.
Si necesita volver a escribir esto varias veces, puede hacer lo mismo que hice una vez. Obtenga los nombres de sus columnas en filas en la hoja de Excel (anote al final de cada nombre de columna (=) que es fácil en el bloc de notas ++) en el lado derecho haga una columna para copiar y pegar el valor que corresponderá a las nuevas entradas en cada columna Luego, a la derecha de ellos en una columna independiente, coloque las comas como se diseñaron
Luego, deberá copiar sus valores en la columna central cada vez, luego simplemente pegar y ejecutar
No conozco una solución más fácil
Tu consulta es casi correcta. El T-SQL para esto es:
UPDATE Table1
SET Field1 = Table2.Field1,
Field2 = Table2.Field2,
other columns...
FROM Table2
WHERE Table1.ID = Table2.ID
aquí hay uno que funciona:
UPDATE `table_1`
INNER JOIN
`table_2` SET col1= value, col2= val,col3= val,col4= val;
valor es la columna de la tabla_2
Sintaxis
UPDATE table-name
SET column-name = value, column-name = value, ...
WHERE condition
Ejemplo
UPDATE school
SET course = ''mysqli'', teacher = ''Tanzania'', student = ''you''
WHERE id = 6
UPDATE t1
SET
t1.a = t2.a,
t1.b = t2.b,
.
.
.
FROM
table1 t1
INNER JOIN table2 t2 ON t1.id=t2.id
Puedes intentar esto
UPDATE table_name
SET column1=value1,column2=value2,...
WHERE some_column=some_value;
update T1
set T1.COST2=T1.TOT_COST+2.000,
T1.COST3=T1.TOT_COST+2.000,
T1.COST4=T1.TOT_COST+2.000,
T1.COST5=T1.TOT_COST+2.000,
T1.COST6=T1.TOT_COST+2.000,
T1.COST7=T1.TOT_COST+2.000,
T1.COST8=T1.TOT_COST+2.000,
T1.COST9=T1.TOT_COST+2.000,
T1.COST10=T1.TOT_COST+2.000,
T1.COST11=T1.TOT_COST+2.000,
T1.COST12=T1.TOT_COST+2.000,
T1.COST13=T1.TOT_COST+2.000
from DBRMAST T1
inner join DBRMAST t2 on t2.CODE=T1.CODE