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?
3 respuestas
Use IN
en lugar de =
:
update tableX
set columnX = 100
where id IN (select id from tableY where col1 = 'Y' and col2 = 'Z');
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');
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';
Nuevas preguntas
sql
El lenguaje de consulta estructurado (SQL) es un lenguaje para consultar bases de datos. Las preguntas deben incluir ejemplos de código, estructura de tabla, datos de muestra y una etiqueta para la implementación de DBMS (por ejemplo, MySQL, PostgreSQL, Oracle, MS SQL Server, IBM DB2, etc.) que se utiliza. Si su pregunta se relaciona únicamente con un DBMS específico (usa extensiones / características específicas), use la etiqueta de ese DBMS en su lugar. Las respuestas a las preguntas etiquetadas con SQL deben usar SQL estándar ISO / IEC.