mysql 从 a表updateb表_mysql根据A表更新B表的方法
最近遇到一个需求:mysql中A表和B表都有(id, age)字段,现在想读取B表的age字段,将其update到A表对应ID的age字段中去,我直接想到了一种方案:用Python读取B表,获得{id:age}形式的数据,然后根据每个ID和age的值依次update A表。两个表分别定义和数据如下:A表定义:FIELDTYPECOMMENTidint(11)namevarchar(20)agein
最近遇到一个需求:mysql中A表和B表都有(id, age)字段,现在想读取B表的age字段,将其update到A表对应ID的age字段中去,我直接想到了一种方案:用Python读取B表,获得{id:age}形式的数据,然后根据每个ID和age的值依次update A表。
两个表分别定义和数据如下:
A表定义:
FIELDTYPECOMMENT
idint(11)
namevarchar(20)
ageint(11)
数据:
1,name1,0
2,name2,0
3,name3,0
4,name4,0
5,name5,0
B表定义
FIELDTYPECOMMENT
idint(11)
ageint(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代码就显得是大炮打蚊子多次一举了。
更多推荐
所有评论(0)