如何在UPDATE语句中使用SELECT的结果?
时间:2011-12-05
来源:互联网
数据库为mysql。
我有一张表AAA。执行如下SQL
SQL code
得到如下结果
type number
18 300
26 270
另:还有另一张表BBB。里面包含了type和number字段。我想把type=18的记录的number设成300,type=26的记录的number设成270.
目前我是先执行SELECT语句,根据select结果执行多次update语句来实现。
问:
能否用一句SQL语句,此语句包含了上面的SELECT语句,来实现这个功能?这个效率是否会比我现在的方式高?
我有一张表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语句,来实现这个功能?这个效率是否会比我现在的方式高?
作者: netdigger_2000 发布时间: 2011-12-05
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
(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
作者: wwwwb 发布时间: 2011-12-05
相关阅读 更多
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28