用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > mysql教程

mysql update根据A表更新B表的sql语句

时间:2015-01-23  来源:西部数据  作者:西部数据

前面我介绍过用一个表更新另一个表,现在我们再来看一篇关于mysql update根据A表更新B表的sql语句文章,希望本文章对你带来帮助.

最近遇到一个需求:mysql中A表和B表都有(id, age)字段,现在想读取B表的age字段,将其update到A表对应ID的age字段中去,我直接想到了一种方案,用Python读取B表,获得{id:age}形式的数据,然后根据每个ID和age的值依次update A表.

两个表分别定义和数据如下:

  1. A表定义: 
  2. Field Type Comment 
  3. id int(11)  
  4. name varchar(20)  
  5. age int(11)  
  6. 数据: 
  7. 1,name1,0 
  8. 2,name2,0 
  9. 3,name3,0 
  10. 4,name4,0 
  11. 5,name5,0 
  12. B表定义 
  13. Field Type Comment 
  14. id int(11)  
  15. age int(11)  
  16. 数据: 
  17. 1,11 
  18. 2,21 
  19. 3,31 
  20. 4,41 
  21. 5,51 

python代码来实现,代码如下:

  1. # -*- encoding:utf8 -*- 
  2. ''''' 
  3. @author: crazyant.net 
  4. 读取B表的(id, age)数据,然后依次更新A表; 
  5. ''' 
  6. from common.DBUtil import DB 
  7. dbUtil = DB('127.0.0.1',3306,'root','','test'
  8. rs = dbUtil.query("SELECT id,age FROM table_b"
  9. for row in rs: 
  10.     (idv,age)=row 
  11.     print (idv,age) 
  12.     update_sql="update table_a set age='%s' where id='%s';"%(age,idv) 
  13.     print update_sql 
  14.     dbUtil.update(update_sql) 
  15. print 'over' //phpfensi.com 

其实一条SQL语句就可以搞定,看了看代码,实在是简单,于是网上搜了一下mysql能不能根据一个表更新另一个表,结果发现update本身就支持多个表更新的功能,代码如下:

UPDATE table_a,table_b SET table_a.age=table_b.age WHERE table_a.id=table_b.id;

用python代码就显得是大炮打蚊子多次一举了.

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
栏目更新
栏目热门