怎么在UPDATE语句中使用SELECT的结果

怎么在UPDATE语句中使用SELECT的结果

如何在UPDATE语句中使用SELECT的结果?

数据库为mysql。

我有一张表AAA。执行如下SQL

SQL code


  
SELECT type, sum(
    CASE 
        WHEN date >= 1322820671621 THEN 50 
    WHEN date >= 1322388671621 AND date < 1322820671621 THEN 20
    WHEN date >= 1320403931304 AND date < 1322388671621 THEN 10
    END) AS number FROM AAA WHERE date >= 1320403931304
GROUP BY type

得到如下结果

type number

18 300

26 270

另:还有另一张表BBB。里面包含了type和number字段。我想把type=18的记录的number设成300,type=26的记录的number设成270.

目前我是先执行SELECT语句,根据select结果执行多次update语句来实现。

问:

能否用一句SQL语句,此语句包含了上面的SELECT语句,来实现这个功能?这个效率是否会比我现在的方式高?



update bbb a inner join 

(SELECT type, sum(

CASE 

WHEN date >= 1322820671621 THEN 50 

WHEN date >= 1322388671621 AND date < 1322820671621 THEN 20

WHEN date >= 1320403931304 AND date < 1322388671621 THEN 10

END) AS number FROM AAA WHERE date >= 1320403931304

GROUP BY type

) b

on a.type=b.type 

set a.number=b.number

怎么在UPDATE语句中使用SELECT的结果

相关文章:

你感兴趣的文章:

标签云: