17
我真的需要做这样的事情:GROUP BY在UPDATE FROM子句
UPDATE table t1
SET column1=t2.column1
FROM table t2
INNER JOIN table t3
USING (column2)
GROUP BY t1.column2;
但Postgres的是说,我有语法错误有关GROUP BY子句。什么是不同的方式来做到这一点?
我真的需要做这样的事情:GROUP BY在UPDATE FROM子句
UPDATE table t1
SET column1=t2.column1
FROM table t2
INNER JOIN table t3
USING (column2)
GROUP BY t1.column2;
但Postgres的是说,我有语法错误有关GROUP BY子句。什么是不同的方式来做到这一点?
UPDATE语句不支持GROUP BY,请参阅the documentation。如果你想更新与T2相应的行T1,你想使用WHERE子句是这样的:如果分配给t1之前需要一群来自T2/T3行
UPDATE table t1 SET column1=t2.column1
FROM table t2
JOIN table t3 USING (column2)
WHERE t1.column2=t2.column2;
,你需要使用子查询是这样的:
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.column1没有在GROUP BY语句包括(但必须是一个聚合函数而不是简单的列参考)。
否则,你到底在做什么?
我不明白他在做什么,但是这个响应对我来说还是很有帮助=) – Yobert
我认为你需要更清楚地表明你想要什么:当你用“t1.column2”进行分组时,引用“t2.column1”在简单的查询中也是没有意义的。你也没有指定加入t2和t1的任何条件,这没有任何意义。 – araqnid
我不认为用mysql至少可以完成 – shigeta