SQL如何用表A更新表B
文章标题很短,因为问题的描述过于具体,标题就会显得过长。
这个问题更为准确地描述应该是这样:表结构雷同或者有相似字段的两张表A和B,如何用A表的字段数据去更新B表字段的数据?
操作方法:
1 update B 2 set B.clolumn_name = A.cloumn.name 3 from A,B 4 where A.ID = B.ID
实例验证。
俗话说,铁打的营盘流水的兵,政府也一样。政府内阁,会随着领导人的变更而发生变更。
分别创建两个表:cabinet和cabinet_new。
cabinet表的内容是在任美国政府内阁成员信息表。
cabinet_new表的内容是新总统的内阁成员信息表。
创建两个表并插入信息,语句如下:
1 create table cabinet 2 ( 3 post VARCHAR(12), 4 name VARCHAR(32) 5 ) 6 7 create table cabinet_new 8 ( 9 post_new VARCHAR(12), 10 name_new VARCHAR(32) 11 ) 12 13 INSERT INTO cabinet 14 VALUES ('总统','奥巴马') 15 INSERT INTO cabinet 16 VALUES ('国务卿','克里') 17 INSERT INTO cabinet 18 VALUES ('国防部长','盖茨') 19 INSERT INTO cabinet 20 VALUES ('财政部长','盖特纳') 21 INSERT INTO cabinet 22 VALUES ('司法部长','霍尔德') 23 INSERT INTO cabinet 24 VALUES ('商务部长','骆家辉') 25 INSERT INTO cabinet 26 VALUES ('能源部长','朱棣文') 27 28 INSERT INTO cabinet_new 29 VALUES('总统','特朗普') 30 INSERT INTO cabinet_new 31 VALUES('国务卿','蒂勒森') 32 INSERT INTO cabinet_new 33 VALUES('国防部长','马蒂斯') 34 INSERT INTO cabinet_new 35 VALUES('财政部长','努钦') 36 INSERT INTO cabinet_new 37 VALUES('司法部长','塞申斯') 38 INSERT INTO cabinet_new 39 VALUES('商务部长','罗斯') 40 41 select * from cabinet 42 select * from cabinet_new
执行结果:
随着奥巴马退职,新总统特朗普也即将上任,相应的,内阁成员也要更换。
对数据表来说,就是将cabinet表中的数据用cabinet_new更新。
根据上述操作方法,编写更新语句并做查询:
1 update cabinet 2 set cabinet.name = cabinet_new.name_new 3 from cabinet,cabinet_new 4 where cabinet.post = cabinet_new.post_new 5 6 select * from cabinet 7 select * from cabinet_new
执行结果:
有执行结果可以知道,更新成功,操作方法可行。