update tablas sentencia ejemplos ejemplo delete con comando sql database db2 sql-update

sql - sentencia - update db2 con 2 tablas



Cómo actualizar varias columnas en una sola declaración de actualización en DB2 (4)

Quiero actualizar varias columnas de una tabla en DB2 con una única declaración de Actualización.

Cualquier pista o idea será apreciable. Gracias.


La declaración de actualización en todas las versiones de SQL se ve así:

update table set col1 = expr1, col2 = expr2, . . . coln = exprn where some condition

Entonces, la respuesta es que separa las asignaciones usando comas y no repite la declaración set .


Si los valores provienen de otra tabla, es posible que desee utilizar

UPDATE table1 t1 SET (col1, col2) = ( SELECT col3, col4 FROM table2 t2 WHERE t1.col8=t2.col9 )

Ejemplo:

UPDATE table1 SET (col1, col2, col3) =( (SELECT MIN (ship_charge), MAX (ship_charge) FROM orders), ''07/01/2007'' ) WHERE col4 = 1001;


update table_name set (col1,col2,col3) values(col1,col2,col);

No es un SQL estándar y no funciona, tienes que usar esto como dijo Gordon Linoff :

update table set col1 = expr1, col2 = expr2, . . . coln = exprn where some condition


Sé que es una vieja pregunta, pero solo tenía que encontrar la solución para la actualización de múltiples filas donde varios registros tenían que actualizarse con diferentes valores basados ​​en sus ID y descubrí que puedo usar una subselección escalar:

UPDATE PROJECT SET DEPTNO = (SELECT WORKDEPT FROM EMPLOYEE WHERE PROJECT.RESPEMP = EMPLOYEE.EMPNO) WHERE RESPEMP=''000030''

(con WHERE opcional, por supuesto)

Además, descubrí que es fundamental especificar que no se usarán valores NULL en esta actualización (en caso de que no todos los registros en la primera tabla tengan el registro correspondiente en la segunda), de esta manera:

UPDATE PROJECT SET DEPTNO = (SELECT WORKDEPT FROM EMPLOYEE WHERE PROJECT.RESPEMP = EMPLOYEE.EMPNO) WHERE RESPEMP IN (SELECT EMPNO FROM EMPLOYEE)

Fuente: https://www.ibm.com/support/knowledgecenter/ssw_i5_54/sqlp/rbafyupdatesub.htm