帮我写个sql,有三张表table1,table2,table3,其中table1根据字段user_id分组之后,把table1中的agg字段取最大值, 把table1中剩余的agg的值修改成最大的数字,table1,table2,table3三个表可有用id进行关联,table1,table2,table3里面都有agg字段,取三个表中agg的最大值
时间: 2024-02-21 11:59:59 浏览: 177
修改表结构-第三章 SQL语言基础及数据定义功能
好的,以下是 SQL 语句:
```
UPDATE table1 t1
SET t1.agg = t2.max_agg
FROM (
SELECT t1.user_id, MAX(t1.agg) AS max_agg
FROM table1 t1
GROUP BY t1.user_id
) t2
WHERE t1.user_id = t2.user_id;
UPDATE table1 t1
SET t1.agg = t2.max_agg
FROM (
SELECT MAX(agg) AS max_agg
FROM (
SELECT agg FROM table1
UNION ALL
SELECT agg FROM table2
UNION ALL
SELECT agg FROM table3
) AS t
) t2;
```
第一条 SQL 语句是根据字段 user_id 分组,把 table1 中的 agg 字段取最大值,然后更新 table1 中的 agg 字段。第二条 SQL 语句是取三个表中 agg 的最大值,然后更新 table1 中的 agg 字段。如果你需要根据 id 进行关联更新,可以在 WHERE 子句中添加关联条件。
阅读全文