如何在PostgreSQL的UPDATE中结合JOIN返回关联表字段?
解决PostgreSQL更新后返回关联表字段的问题
你可以通过**CTE(公共表表达式)**先捕获更新后的entradas记录,再关联actores表获取需要的字段,具体写法如下:
WITH updated_entradas AS ( UPDATE entradas SET vendida = false WHERE ticket_id - 1134 = 101 RETURNING ticket_id, vendida, user_id ) SELECT u.ticket_id - 1134 AS numero_entrada, u.vendida, a.name, a.fecha FROM updated_entradas u JOIN actores a ON u.user_id = a.user_id;
逻辑说明
- 先通过
WITH子句里的UPDATE语句更新entradas表的vendida字段,同时返回更新后的ticket_id、vendida和关联需要的user_id; - 再将捕获到的更新记录与
actores表通过user_id关联,查询出你需要的name和fecha字段。
原来的写法无法直接返回actores表字段,是因为RETURNING子句只能直接引用被更新表的字段,不能直接跨表引用未关联的其他表字段。这种CTE的方式既完成了更新操作,又能灵活关联其他表获取所需数据。
内容的提问来源于stack exchange,提问作者Ana Cruz
相关产品推荐
相关产品推荐

