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