如何使用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. 聚合函數返回null
- 2. SSRS返回聚合函數
- 3. 聚合函數SUM()的返回null PHP
- 4. 異步從貓鼬聚合返回值
- 5. MongoDB聚合函數返回未定義
- 6. postgresql corr聚合函數返回null
- 7. 如何使用c#返回MySQL的聚合函數的結果?
- 8. 作爲數據框返回聚合值
- 9. 聚合函數SUM返回不同的值
- 10. 爲一個組返回任何值的聚合函數
- 11. 新項目更改函數返回值
- 12. 使用返回多個值的函數更新多列
- 13. 更新與聚合函數和選擇
- 14. 在更新語句TSQL聚合函數
- 15. SQL:聚合函數返回時使用WHERE過濾
- 16. 使用VBScript從函數返回值
- 17. 當加入更多表格時,聚合函數返回不正確的值
- 18. 使用聚合過濾器的術語聚合返回比不使用聚合過濾器更多的doc_count
- 19. Oracle聚合函數爲一個組返回一個隨機值?
- 20. MySQL聚合函數返回值到JAVA POJO類
- 21. TableAdapter更新函數返回
- 22. 返回必須從函數更新的變量,不返回?
- 23. 更改函數返回值
- 24. 使用SQL聚合函數
- 25. Neo4j - 不能在聚合函數裏面使用聚合函數
- 26. 更新列使用內部加入和聚合函數
- 27. 使用Mongoose返回更新集合
- 28. 從函數返回值
- 29. 從PostgreSQL函數返回值
- 30. 從Ajax函數返回值
這太模糊了,但它聽起來有點可疑,以非規範化的方式。請詳細說明您正在努力達到的目標,以便我們能夠更好地回答您的問題。 – APC 2010-01-11 11:24:36