Usando postgres 8.4, mi objetivo es actualizar la tabla existente:
CREATE TABLE public.dummy
(
address_id SERIAL,
addr1 character(40),
addr2 character(40),
city character(25),
state character(2),
zip character(5),
customer boolean,
supplier boolean,
partner boolean
)
WITH (
OIDS=FALSE
);
Inicialmente probé mi consulta usando la instrucción de inserción:
insert into address customer,supplier,partner
SELECT
case when cust.addr1 is not null then TRUE else FALSE end customer,
case when suppl.addr1 is not null then TRUE else FALSE end supplier,
case when partn.addr1 is not null then TRUE else FALSE end partner
from (
SELECT *
from address) pa
left outer join cust_original cust
on (pa.addr1=cust.addr1 and pa.addr2=cust.addr2 and pa.city=cust.city
and pa.state=cust.state and substring(cust.zip,1,5) = pa.zip )
left outer join supp_original suppl
on (pa.addr1=suppl.addr1 and pa.addr2=suppl.addr2 and pa.city=suppl.city
and pa.state=suppl.state and pa.zip = substring(suppl.zip,1,5))
left outer join partner_original partn
on (pa.addr1=partn.addr1 and pa.addr2=partn.addr2 and pa.city=partn.city
and pa.state=partn.state and pa.zip = substring(partn.zip,1,5) )
where pa.address_id = address_id
al ser novato, no puedo convertir la declaración de actualización, es decir, actualizar las filas existentes con valores devueltos por la declaración de selección. Cualquier ayuda es muy apreciada.
sql
postgresql
subquery
sql-update
apilamiento
fuente
fuente
Respuestas:
Postgres permite:
Esta sintaxis no es SQL estándar, pero es mucho más conveniente para este tipo de consulta que SQL estándar. Creo que Oracle (al menos) acepta algo similar.
fuente
ERROR: 42P01: relation "dummy" does not exist
dummy
tiene que ser reemplazado por el nombre de la tabla que está intentando actualizar. Por favor, comprenda la pregunta y la respuesta antes de intentar aplicar.Estás tras la
UPDATE FROM
sintaxis.Referencias
fuente
Si no hay ganancias de rendimiento con una combinación, prefiero las expresiones de tabla comunes (CTE) para facilitar la lectura:
En mi humilde opinión un poco más moderno.
fuente
Hay muchas formas de actualizar las filas.
Cuando se trata de
UPDATE
filas usando subconsultas, puede usar cualquiera de estos enfoques.Enfoque-4 [Uso de la instrucción WITH]
Espero que esto sea útil.
fuente
fuente
@Mayur "4.2 [Uso de la consulta con JOIN complejo]" con expresiones de tabla comunes (CTE) me ayudó.
Espero que esto ayude ...: D
fuente