关于批量更新的问题
2008-05-08 15:18
323 查看
Update的实质是先Delete,然后在Insert。
有两个表,可以通过主键关联,如果要把一个表的某个字段,更新到另一个表中的相应记录的字段,以往在写程序的时候,是通过循环,逐一去更新每一条记录,这样做的效率太低了,可以使用批量Update来处理。
例如:
select * from taskmain
taskid tasknu taskprice
001 100 10
002 100 11
003 120 12
004 100 13
005 130 10
006 100 11
008 100 11
100 100 12
101 100 13
120 100 11
131 100 10
select * from taskdetal
detalid detalnm detalprice
001 100 18
002 100 20
003 100 21
004 100 22
005 100 23
006 100 24
007 100 25
008 100 26
009 100 27
010 100 28
011 100 20
100 100 30
101 100 20
要把 taskdetal 的detalprice 更新到 taskmain 表里的taskprice, taskmain的主键为taskid taskdetal的主键为detalid
update taskmain set taskprice = t.detalprice
from taskdetal as t where taskmain.taskid = t.detalid
这样的更新的效率会大大提高。
有两个表,可以通过主键关联,如果要把一个表的某个字段,更新到另一个表中的相应记录的字段,以往在写程序的时候,是通过循环,逐一去更新每一条记录,这样做的效率太低了,可以使用批量Update来处理。
例如:
select * from taskmain
taskid tasknu taskprice
001 100 10
002 100 11
003 120 12
004 100 13
005 130 10
006 100 11
008 100 11
100 100 12
101 100 13
120 100 11
131 100 10
select * from taskdetal
detalid detalnm detalprice
001 100 18
002 100 20
003 100 21
004 100 22
005 100 23
006 100 24
007 100 25
008 100 26
009 100 27
010 100 28
011 100 20
100 100 30
101 100 20
要把 taskdetal 的detalprice 更新到 taskmain 表里的taskprice, taskmain的主键为taskid taskdetal的主键为detalid
update taskmain set taskprice = t.detalprice
from taskdetal as t where taskmain.taskid = t.detalid
这样的更新的效率会大大提高。
相关文章推荐
- 关于mysql 批量更新开关在mycat中失效的问题
- 关于SQL触发器批量更新的问题
- 关于大数据批量更新的问题(高性能)
- 关于批量数据更新的问题(C#高性能)
- 关于批量数据更新的问题(C#高性能)
- 关于批量数据更新的问题(C#高性能)
- 【转】关于批量数据更新的问题(C#高性能)
- 关于批量更新
- 关于mybatis中,批量增删改查以及參数传递的问题
- 关于友盟分享在开发中遇到的问题汇总~持续更新中
- 关于更新发布CSS和JS文件的缓存问题
- 关于在eclipse中导入android support design包出错的问题【不定时更新】
- 关于Android studio更新后遇到java.lang.UnsatisfiedLinkError报错问题arm64-v8a,armeabi-v7a
- 批量解决Xcode更新后,插件过期问题
- 关于ViewPager的数据更新问题小结
- 关于C#更新Access数据库时发现的一个没有任何技术含量的问题,给大家分享,希望能给大家帮助
- 关于Javascript与表单结合时出现"对象不支持此属性或方法"的问题总结(不断更新中...)
- 关于更改js文件浏览器不能同步更新的问题
- 关于app更新安装闪退和EditText长按出现的水滴颜色设置问题
- mysql关于日期的问题(合集,持续更新中:2018.03.26)