最近遇到一个需求: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代码就显得是大炮打蚊子多次一举了。

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐