![](/img/trans.png)
[英]How can I select max value from one column and update another column with selected Max value
[英]Update select using the max of one column Postgresql
因此,我正在更改数据库结构。 我正在将一列“大小”从table_B移到table_A。 Table_B可以具有多个引用table_A.a_id的条目
我想用具有最高b_id的行从table_B更新table_A中的新“大小”列。
因此,我可以使用Max()和group by为每个a_id选择最高的b_id。
SELECT max(b_id)
FROM table_B
GROUP BY a_id;
但我不确定如何将其与更新选择配合使用
UPDATE table_A
SET table_A.size = table_B.size
FROM table_A, table_B
WHERE table_A.a_id = table_B.a_id
AND table_B.b_id =
(
max...
);
编辑:我意识到现在这实际上不是更新选择,我的第一次尝试是
table_B的外观以及table_A中的预期结果
table_A
a_id | size
-------------------------
1 | 5678
2 | 456
table_B
b_id | a_id | size
--------------------------------------
1 | 1 | 1234
2 | 1 | 5678
3 | 2 | 456
首先,编写select
以获取所需的大小:
select distinct on (b.a_id) b.a_id, b.size
from tableb b
order by b.a_id, b.b_id desc;
接下来,将其合并到update
:
update tablea a
set size = b.size
from (select distinct on (b.a_id) b.*
from tableb b
order by b.a_id, b.b_id desc
) b
where a.a_id = b.a_id;
您可以尝试以下查询
UPDATE table_A
SET table_A.size =
( SELECT table_B.size
FROM table_B B1
WHERE table_A.a_id = B1.a_id AND
B1.b_id = (SELECT max(b_id) FROM table_B B2 WHERE table_A.a_id=B2.a_id))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.