使用SELECT从另一个UPDATE表,但字段为SUM(someField)

时间:2012-04-21 18:55:25

标签: mysql sql

基本上我有类似的东西:

UPDATE
    Table
SET
    Table.col1 = other_table.col1,
FROM
    Table
INNER JOIN
    other_table
ON
    Table.id = other_table.id

问题是我想更新col1,选择如下:

SELECT SUM(col1) FROM other_table WHERE Table.id = other_table.id AND period > 2011

修改

正确答案:

UPDATE bestall  
INNER JOIN (SELECT bestid,SUM(view) as v,SUM(rawView) as rv 
                           FROM beststat 
                           WHERE period > 2011 GROUP BY bestid) as t1 
ON bestall.bestid = t1.bestid
SET view = t1.v, rawview = t1.rv

1 个答案:

答案 0 :(得分:3)

您不能直接在set子句中使用聚合。一种方法是子查询:

update  your_table as yt
left join 
        (
        select  id
        ,       count(*) as cnt
        from    other_table
        where   period < 4
        group by
                id       
        ) as ot
on      yt.id = ot.id 
set     col1 = coalesce(ot.cnt,0)

Example at SQL Fiddle.