首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >更新FROM子句中的GROUP BY

更新FROM子句中的GROUP BY
EN

Stack Overflow用户
提问于 2011-03-11 19:38:39
回答 2查看 59.1K关注 0票数 34

我真的需要这样做:

UPDATE table t1 
SET column1=t2.column1 
FROM table t2 
INNER JOIN table t3 
USING (column2) 
GROUP BY t1.column2;

但是postgres说我对GROUP BY子句有语法错误。有什么不同的方法可以做到这一点?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-03-11 19:49:42

UPDATE语句不支持GROUP BY,请参见the documentation。如果您尝试使用t2中的相应行更新t1,您可能希望使用WHERE子句,如下所示:

UPDATE table t1 SET column1=t2.column1
FROM   table t2
JOIN   table t3 USING (column2)
WHERE  t1.column2=t2.column2;

如果您需要在将t2/t3中的行分配给t1之前对其进行分组,则需要使用如下所示的子查询:

UPDATE table t1 SET column1=sq.column1
FROM  (
   SELECT t2.column1, column2
   FROM   table t2
   JOIN   table t3 USING (column2)
   GROUP  BY column2
   ) AS sq
WHERE  t1.column2=sq.column2;

尽管按照公式,这是不可行的,因为t2.column 1没有包含在GROUP BY语句中(它必须是一个聚合函数,而不是一个简单的列引用)。

否则,你到底想在这里做什么?

票数 78
EN

Stack Overflow用户

发布于 2022-02-15 09:18:31

在MariaDB/ MySQL中,这个SQL是工作的:

 UPDATE table t1 left join (
   SELECT t2.column1, column2
   FROM   table t2
   JOIN   table t3 USING (column2)
   GROUP  BY column2
   ) AS sq on t1.column2=sq.column2 
SET column1=sq.column1;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5272412

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档