最近遇到一个需求:mysql中a表和b表都有(id, age)字段,现在想读取b表的age字段,将其update到a表对应id的age字段中去,我直接想到了一种方案:用python读取b表,获得{id:age}形式的数据,然后根据每个id和age的值依次update a表。 两个表分别定义和数据如下
最近遇到一个需求: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代码来实现
# -*- encoding:utf8 -*-
'''
@author: crazyant.net
读取b表的(id, age)数据,然后依次更新a表;
'''
from common.dbutil import db
dbutil = db('127.0.0.1',3306,'root','','test')
rs = dbutil.query(select id,age from table_b)
for row in rs:
(idv,age)=row
print (idv,age)
update_sql=update table_a set age='%s' where id='%s';%(age,idv)
print update_sql
dbutil.update(update_sql)
print 'over'
?
其实一条sql语句就可以搞定
看了看代码,实在是简单,于是网上搜了一下mysql能不能根据一个表更新另一个表,结果发现update本身就支持多个表更新的功能。
update table_a,table_b set table_a.age=table_b.age where table_a.id=table_b.id;
用python代码就显得是大炮打蚊子多次一举了。
转载请注明来源:链接
原文地址:mysql根据a表更新b表的方法, 感谢原作者分享。