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代码来实现
代码如下 | |
# -*- encoding:utf8 -*- dbUtil = DB('127.0.0.1',3306,'root','','test') rs = dbUtil.query("SELECT id,age FROM table_b") for row in rs: 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代码就显得是大炮打蚊子多次一举了。