Saltar al contenido

actualizar filas de tabla en postgres usando subconsulta

Solución:

Postgres permite:

UPDATE dummy
SET customer=subquery.customer,
    address=subquery.address,
    partn=subquery.partn
FROM (SELECT address_id, customer, address, partn
      FROM  /* big hairy SQL */ ...) AS subquery
WHERE dummy.address_id=subquery.address_id;

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.

Estás tras el UPDATE FROM sintaxis.

UPDATE 
  table T1  
SET 
  column1 = T2.column1 
FROM 
  table T2 
  INNER JOIN table T3 USING (column2) 
WHERE 
  T1.column2 = T2.column2;

Referencias

  • Ejemplo de código aquí: GROUP BY en la cláusula UPDATE FROM
  • Y aquí
  • Especificación de sintaxis formal

Si no hay mejoras en el rendimiento al usar una combinación, prefiero las expresiones de tabla comunes (CTE) para mejorar la legibilidad:

WITH subquery AS (
    SELECT address_id, customer, address, partn
    FROM  /* big hairy SQL */ ...
)
UPDATE dummy
SET customer = subquery.customer,
    address  = subquery.address,
    partn    = subquery.partn
FROM subquery
WHERE dummy.address_id = subquery.address_id;

En mi humilde opinión, un poco más moderno.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *