如何在SQL UPDATE 查詢中使用聚合函數
在SQL 中,通常需要根據另一個表的聚合資料來更新表的聚合資料來更新表的值桌子。但是,標準 UPDATE 查詢不支援 SUM 或 GROUP BY 等聚合函數。
要解決此問題,請按照以下步驟操作:
範例:
考慮以下場景:您想要使用table1 表中每個field3 的field2 值的總和來更新table1 表中的field1 欄table2 表。
不正確的實作:
UPDATE table1 SET field1 = SUM(table2.field2) FROM table1 INNER JOIN table2 ON table1.field3 = table2.field3 GROUP BY table1.field3
此查詢不正確,因為SET 子句不能使用聚合函數,且此查詢不支援GROUP BY 子句上下文。
正確實現:
要正確實現此目的,請使用子查詢來計算聚合並將其與目標表連接以進行更新:
UPDATE t1 SET t1.field1 = t2.field2Sum FROM table1 t1 INNER JOIN (select field3, sum(field2) as field2Sum from table2 group by field3) as t2 on t2.field3 = t1.field3
此查詢首先建立一個子查詢,計算table2 中每個field3 的field2 總和,有效聚合資料。結果儲存在臨時表中,然後使用 field3 列作為聯接條件與 table1 聯接。然後用對應的 field2Sum 值更新 table1 中的 field1 欄位。
以上是如何在 SQL UPDATE 語句中使用聚合函數?的詳細內容。更多資訊請關注PHP中文網其他相關文章!