萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> mysql教程 >> mysql update根據A表更新B表的sql語句

mysql update根據A表更新B表的sql語句

前面我介紹過用一個表更新另一個表,現在我們再來看一篇關於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 -*-
'''
@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代碼就顯得是大炮打蚊子多次一舉了。

copyright © 萬盛學電腦網 all rights reserved