如何在PostreSQL更新连接上使用排序依据和限制



我有两个表,A和B。A包含两个需要从B填充的新字段。A&B具有一对多关系,因此我需要同时使用ORDER BYLIMIT 1

UPDATE a
SET x=b.x, y=b.y
FROM b
WHERE a.some_id=b.some_id
ORDER BY b.z ASC
LIMIT 1

我得到以下错误:

SELECT DISTINCT ON expressions must match initial ORDER BY expressions

您需要一个子查询,为每个ab中选择最新的行

UPDATE a
SET x=b.x, y=b.y
FROM (
select distinct on (b.some_id) *
from b
order by some_id, some_timestamp desc --<< picks the latest
) b 
WHERE a.some_id = b.some_id

最新更新