A-A+

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

2017年10月23日 PHP技术文章 暂无评论 阅读 0 views 次

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

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

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

A表定义:

Field Type Comment

id int(11)

name varchar(20)

age int(11)

数据:

1,name1,0

2,name2,0

3,name3,0

4,name4,0

5,name5,0

B表定义

Field Type Comment

id int(11)

age int(11)

数据:

1,11

2,21

3,31

4,41

5,51

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

  1. # -*- encoding:utf8 -*-   
  2. '''''   
  3. @author: crazyant.net   

读取B表的(id, age)数据,然后依次更新A表;

  1. '''   
  2. from common.DBUtil import DB   
  3. dbUtil = DB('127.0.0.1',3306,'root','','test')   
  4. rs = dbUtil.query("SELECT id,age FROM table_b")   
  5. for row in rs:   
  6.     (idv,age)=row   
  7.     print (idv,age)   
  8.     update_sql="update table_a set age='%s' where id='%s';"%(age,idv)   
  9.     print update_sql   
  10.     dbUtil.update(update_sql)   
  11. print 'over' //www.xiariboke.net   

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

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

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

标签:

给我留言