我有两个表a和b。 我想更新表a中的行,这是表b中最早插入的每个id的最新插入,其中a.id = b.id
我一直试图将update语句与from中的子选择一起使用。 如果我自己执行子查询,它将返回x行数,但是当我执行整个update语句时,它将更新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中的子选择查询中返回的行数相同的行。
答案 0 :(得分:0)
在这种情况下,更新的行少于子查询返回的行,这可能是因为在子查询中多次返回了一个行ID。如果发生这种情况,update语句仍将仅更新该行一次。我假设您提供的语句与您正在运行的语句不完全相同,但是您应该检查子查询是否没有在子查询的id字段中提供重复项(使用DISTINCT
或{{1} }或再次检查您的GROUP BY
条件。