Quiero actualizar una tabla basada en la siguiente consulta en PostgreSQL

UPDATE tableX
SET columnX = 100
WHERE id = (SELECT ID FROM tableY WHERE col1 = 'Y' AND col2 = 'Z');

Y el problema es:

Seleccionar consulta puede devolver más de una fila

. ¿Cómo actualizo la tabla con una sola consulta?

1
krltos 23 ene. 2018 a las 12:42

3 respuestas

La mejor respuesta

Use IN en lugar de =:

update tableX
set columnX = 100
where id IN (select id from tableY where col1 = 'Y' and col2 = 'Z');
3
DineshDB 23 ene. 2018 a las 09:43

Puede verificar que la identificación esté en la lista devuelta.

update tableX
set columnX = 100
where id in (select id from tableY where col1 = 'Y' and col2 = 'Z');
2
cdaiga 23 ene. 2018 a las 09:44

Y para completar:

No necesita usar una subconsulta en primer lugar. También puedes usar:

update tableX
set columnX = 100
from tableY
where tableX.id=tableY.id
and tableY.col1 = 'Y'
and tableY.col2 = 'Z';
2
rpy 23 ene. 2018 a las 09:53