用一個表中的字段去更新另外一個表中的字段, MySQL 中有相應的 update 語句來支持,不過這個 update 語法有些特殊。看一個例子就明白了。
create table student
(
student_id int not null
,student_name varchar(30) not null
,city_code varchar(10) null
,city_name varchar(50) null
);
create table city
(
code varchar(10) not null
,name varchar(50) not null
);
insert into student values(1, 'john', '001', null);
insert into student values(2, 'nick', '002', null);
insert into city values('001', 'beijing');
insert into city values('002', 'shanghai');
insert into city values('003', 'shenzhen');
有兩個表:student & city,現在需要取出 city.name 來更新 student.city_name。兩表關聯條件是 student.city_code=city.code。
update student s, city c
set s.city_name = c.name
where s.city_code = c.code;
也可以試下面的相關子查詢:
update student s set city_name = (select name from city where code = s.city_code);
