我有两个表,A和B。A包含两个需要从B填充的新字段。A&B具有一对多关系,因此我需要同时使用ORDER BY
和LIMIT 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
您需要一个子查询,为每个a
从b
中选择最新的行
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