使用aggregate函数返回的值进行更新

时间:2010-01-11 11:18:51

标签: sql

如何使用sql update语句中的聚合函数更新表的列?

1 个答案:

答案 0 :(得分:6)

根据定义,聚合函数将输入的一个或多个记录聚合到结果集中的单个记录中,因此您想要更新哪个记录并不明显。

通常,您可以在子查询中使用聚合函数:

UPDATE  mytable
SET     mycol = 
        (
        SELECT  SUM(othercol)
        FROM    othertable o
        WHERE   o.yetothercol = m.yetmycol
        )

,在JOIN中(适用于MySQLSQL Server

UPDATE  mytable
JOIN    (
        SELECT  yetothercol, SUM(othercol) AS psum
        FROM    othertable
        GROUP BY
                yetothercol
        ) s
ON      yetmycol = yetothercol
SET     mycol = psum

MERGE语句(适用于OracleSQL 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