前面我介紹過用一個表更新另一個表,現在我們再來看一篇關于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' //Vevb.com
其實一條SQL語句就可以搞定,看了看代碼,實在是簡單,于是網上搜了一下mysql能不能根據一個表更新另一個表,結果發現update本身就支持多個表更新的功能,代碼如下:
UPDATE table_a,table_b SET table_a.age=table_b.age WHERE table_a.id=table_b.id;
用python代碼就顯得是大炮打蚊子多次一舉了.
新聞熱點
疑難解答