【发布时间】:2019-02-06 00:05:24
【问题描述】:
我有两张桌子 a 和 b。 我想更新表 a 中的行,该行是表 b 中最早插入的每个 id 的最新插入,其中 a.id = b.id
我一直在尝试在 from 中使用带有子选择的更新语句。 如果我自己执行子查询,它会返回 x 行数,但是当我执行整个更新语句时,它会更新 y 行数。
update a
set title = b.title
created_at = b.created_at
from
(
select
e.id,e.title,e.created_at
from
(
select
l.id,
l.title,
l.created_at
l.t_insert
from b l
left join b r
l.id = r.id and l.t_insert > r.t_insert
) e
join
(
select
l.id,
l.title,
l.created_at,
l.t_insert
from a l
left join a r on l.report_id = r.report_id and l.t_insert <
r.t_insert
) f
)
where
a.id=b.id
我希望更新的行数与 from 中的子选择查询中返回的行数相同。
【问题讨论】:
标签: postgresql