CONTENIDO
Existe la posibilidad de modificar la información contenida en una tabla asignando como nuevo valor o valores, el resultado de una consulta.
El resultado de la consulta puede asignarse a una única columna o a una lista de columnas. En el primer caso, la sentencia SELECT sólo devolverá un valor (una fila y una columna) el cual debe coincidir en tipo de dato y longitud con el tipo de dato y longitud de la columna a la cual asignamos el valor.
Es importante que nos aseguremos de que la subconsulta devuelve un único valor y que éste sea consistente con el tipo de dato esperado.
update imparte
set asignatura='BDA',
dni = (select dni from profesores)
where asignatura like '%BD%';
ERROR:
la subconsulta de una sola fila devuelve más de una fila
Finalmente, podemos combinar todo lo visto en una única sentencia.
select * from asignaturas;
update asignaturas
set creditos = 5,
(descripcion, creditosp) = (select nombre, 3 from profesores where dni = '21333444')
where codigo like '%BD%';
select * from asignaturas;
NOTA: hemos utilizado una constante en la subconsulta (el valor 3)