如何使用sql update
語句中的聚合函數更新表的列?使用從聚合函數返回的值更新
回答
根據定義,聚合函數將輸入的一個或多個記錄聚合到結果集中的單個記錄中,因此不清楚要更新哪個記錄。 (在MySQL
和SQL Server
作品)
UPDATE mytable
JOIN (
SELECT yetothercol, SUM(othercol) AS psum
FROM othertable
GROUP BY
yetothercol
) s
ON yetmycol = yetothercol
SET mycol = psum
,或者在MERGE
聲明(在作品
UPDATE mytable
SET mycol =
(
SELECT SUM(othercol)
FROM othertable o
WHERE o.yetothercol = m.yetmycol
)
,在JOIN
:
在一般情況下,你可以在一個子查詢中使用聚合函數Oracle
和SQL Server 2008
):
MERGE
INTO mycol
USING (
SELECT yetothercol, SUM(othercol) AS psum
FROM othertable
GROUP BY
yetothercol
) s
ON (yetmycol = yetothercol)
WHEN MATCHED THEN
UPDATE
SET mycol = psum
我對第一個建議有疑問。如何確定子查詢的順序可以爲myco賦值?你在where子句中指定m.yetmycol(我想你的意思是mytable爲m)。你怎麼知道它是否會按照o.yetothercol或m.yetmycol的順序出現?它是可預測的嗎? (我覺得這不應該成爲另一個問題,但也許會更容易問一下。) – 2010-12-16 16:42:33
@Etiennebr:「子查詢的順序」是什麼意思? – Quassnoi 2010-12-16 22:21:38
好吧,我不確定這裏的術語,但包含連接的查詢看起來像一個子查詢(在UPDATE查詢中有一個SELECT查詢)。我想我自己已經回答了我的問題。該命令由o.yetothercol = m.yetmycol和m在第一個查詢之外的事實來保證。 – 2011-01-17 14:17:37
- 1. 聚合函數SUM()的返回null PHP
- 2. 異步從貓鼬聚合返回值
- 3. postgresql corr聚合函數返回null
- 4. 作爲數據框返回聚合值
- 5. 爲一個組返回任何值的聚合函數
- 6. 使用VBScript從函數返回值
- 7. SQL:聚合函數返回時使用WHERE過濾
- 8. 當加入更多表格時,聚合函數返回不正確的值
- 9. 使用聚合過濾器的術語聚合返回比不使用聚合過濾器更多的doc_count
- 10. Oracle聚合函數爲一個組返回一個隨機值?
- 11. MySQL聚合函數返回值到JAVA POJO類
- 12. 返回必須從函數更新的變量,不返回?
- 13. 更改函數返回值
- 14. 使用SQL聚合函數
- 15. Neo4j - 不能在聚合函數裏面使用聚合函數
- 16. 更新列使用內部加入和聚合函數
- 17. 從函數返回值
- 18. 從函數返回值
- 19. 從Ajax函數返回值
- 20. 從PostgreSQL函數返回值
- 21. 返回值從PHP函數
- 22. 從函數返回指針。值不更新爲一個指針
- 23. 如何從使用gtk回調調用的函數返回值?
- 24. Xquery - 將聚合返回爲新屬性
- 25. 聚合返回所有值不做羣
- 26. Elasticsearch對聚合查詢返回空值
- 27. 返回布爾函數調用它 - Javascript /聚合物
- 28. 使用從函數返回的數組
- 29. 更新列爲不同的聚合值
- 30. 使用分子函數的返回值
這太模糊了,但它聽起來有點可疑,以非規範化的方式。請詳細說明您正在努力達到的目標,以便我們能夠更好地回答您的問題。 – APC 2010-01-11 11:24:36