Bienvenido, les saluda Luis y aquí les traigo este tutorial.
A menudo necesito actualizar una tabla usando valores de una tabla diferente y la mayoría de las veces la solución más rápida y sucia es simplemente hacer una subconsulta. Una solución mejor y más limpia es utilizar el UPDATE .. SET .. FROM:
Describamos nuestro caso con un ejemplo:
Tengo una mesa journey_pattern
en el que necesito actualizar el nombre en función del nombre de su línea. Puedo encontrar la línea uniendo otras 2 tablas: routes
y lines
.
Usando una subconsulta simplemente puedo hacer:
Pero que si lines.name
está vacío o es nulo? Necesito verificar ese caso usando un CASE .. THEN .. ELSE .. END
. La subconsulta en línea terminará siendo bastante difícil de leer.
Como puede ver en la documentación UPDATE de Postgresql, podemos usar un WITH QUERY para actualizar nuestra tabla:
Entonces en nuestro caso:
La WITH
se utiliza para reagrupar un journey_pattern
con un lines.name
y solo devolvemos los nombres de línea que no son nulos ni vacíos. Entonces podemos hacer un UPDATE .. SET .. FROM .. WHERE
para actualizar nuestro journey_pattern.name
.
Y la cereza es que esta actualización se realiza solo cuando lines.name
está establecido.
Gracias por leer.
Añadir comentario