[英]update existing column with results of select query using sql
我正在嘗試使用從SELECT
語句獲得的結果更新Results
表中名為Number_Of_Marks
的列。 我們的select語句用於計算結果表中每個模塊的標記數。 SELECT
語句有效,輸出正確,即
ResultID ModuleID cnt
-------------------------
111 ART3452 2
114 ART3452 2
115 CSC3039 3
112 CSC3039 3
113 CSC3039 3
使用的表格是:
結果: ResultID, ModuleID, Number_Of_Marks
我們需要將cnt的結果更新到我們的Number_Of_Marks列中。 這是我們的代碼......
DECLARE @cnt INT
SELECT @cnt
SELECT C.cnt
FROM Results S
INNER JOIN (SELECT ModuleID, count(ModuleID) as cnt
FROM Results
GROUP BY ModuleID) C ON S.ModuleID = C.ModuleID
UPDATE Results
SET [Number_Of_Marks] = (@cnt)
您可以使用update
/ join
語法在SQL Server中執行此操作:
UPDATE s
SET [Number_Of_Marks] = c.cnt
FROM Results S INNER JOIN
(SELECT ModuleID, count(ModuleID) as cnt
FROM Results
GROUP BY ModuleID
) C
ON S.ModuleID = C.ModuleID;
我假設你想要來自子查詢的計數,而不是來自未初始化的變量。
編輯:
一般來說,當您更改問題時,最好再提一個問題。 但有時,變化實際上很小。 修改后的查詢類似於:
UPDATE s
SET [Number_Of_Marks] = c.cnt,
Marks = avgmarks
FROM Results S INNER JOIN
(SELECT ModuleID, count(ModuleID) as cnt, avg(marks * 1.0) as avgmarks
FROM Results
GROUP BY ModuleID
) C
ON S.ModuleID = C.ModuleID;
請注意,我將marks
乘以1.0
。 這是將整數轉換為數值的快速方法。 SQL Server取整數的平均值並生成一個整數。 通常你想要某種十進制或浮點值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.