如何在 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中文网其他相关文章!