用户名:
密 码: 记住
您当前的位置:首页 > 网络编程 > mysql教程

MySQL一条语句更新多个表的方法

时间:2015-01-23  来源:西部数据  作者:西部数据

MySQL一条语句更新多个表的方法我们会用到join子查询了,下面我们一起来看看实现方法,MySQL本身是支持一条update语句更新多个表的,有时候这是非常有用的一个特性,代码如下:

  1. Multiple-table syntax 
  2. UPDATE [LOW_PRIORITY] [IGNORE] table_references 
  3.     SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] … 
  4.     [WHERE where_condition]</pre> 

于是继续找table_references说明,代码如下:

  1. table_references: 
  2.     escaped_table_reference [, escaped_table_reference] … 
  3. escaped_table_reference: 
  4.     table_reference 
  5.   | { OJ table_reference } 
  6. table_reference: 
  7.     table_factor 
  8.   | join_table 
  9. table_factor: 
  10.     tbl_name [[AS] alias] [index_hint] 
  11.   | table_subquery [AS] alias 
  12.   | ( table_references ) 

可以看到,update的关键词可以写多个表,每个表也可以是个子查询、也可以是join语句.

一个小尝试,在我的另一篇文章中,我已经用到了该语法,代码如下:

  1. UPDATE table_a,table_b SET table_a.age=table_b.age WHERE table_a.id=table_b.id; 

该语句中的table_b表也可以换成子查询、join子句,代码如下:

  1. UPDATE table_a,(SELECT id,age FROM table_b) AS tb SET table_a.age=tb.age WHERE table_a.id=tb.id; 

如果没明白我们再接一个小看一个例子就明白了,代码如下:

  1. create table student 
  2.    student_id    int          not null 
  3.   ,student_name  varchar(30)  not null 
  4.   ,city_code     varchar(10)  null 
  5.   ,city_name     varchar(50)  null 
  6. ); //phpfensi.com
  7. create table city 
  8.    code varchar(10) not null 
  9.   ,name varchar(50) not null 
  10. ); 
  11. insert into student values(1, 'john''001'null); 
  12. insert into student values(2, 'nick''002'null); 
  13. insert into city values('001''beijing'); 
  14. insert into city values('002''shanghai'); 
  15. insert into city values('003''shenzhen'); 

有两个表:student & city,现在需要取出 city.name 来更新 student.city_name,两表关联条件是如下代码:

  1. student.city_code=city.code。 
  2. update student s, city c 
  3.    set s.city_name = c.name 
  4.  where s.city_code = c.code; 

也可以试下面的相关子查询,代码如下:

update student s set city_name = (select name from city where code = s.city_code);

来顶一下
返回首页
返回首页
推荐资讯
WiFi太不安全:7岁女孩11分钟内入侵公共网络 WiFi太不安全:7岁女孩11分钟内入侵近期刚刚发布研究说WiFi网络能获得人们手机里多少私人信息,
不服跑个分?人工智能也出现“刷分”乱象 不服跑个分?人工智能也出现“刷分2014年,人工智能领域突然爆发,成为了科研和科技创业的热门
相关文章
    无相关信息
栏目更新
栏目热门