在一次成绩查询系统的修改中,改动了一张表,在一张表里增加了一个字段,现在需要将另外一个表的对应ID复制过来,由于不经常使用这样的SQL操作,甚至想到了写个循环来处理。但是我又觉得SQL应该可以实现这样的功能,就查了查手册,果然简单,有个update ... from ... 的语法。例子如下:
id | subject_id |
---|---|
1 | null |
2 | null |
3 | null |
4 | null |
5 | null |
6 | null |
sb_id | st_id |
---|---|
5 | 1 |
2 | 2 |
5 | 3 |
5 | 4 |
2 | 5 |
2 | 6 |
SQL语句如下:
1
|
UPDATEASETA.subject_id=B.sb_idFROMBWHEREB.student_id=A.id
|
更新:上面一条语句只适合在mssql server下面用,在mysql里应该用下面一条:
1
|
UPDATEA, BSETA.subject_id=B.sb_idWHEREB.student_id=A.id
|
例子2:
MYSQL是这个
update table2 b,(select b.area_id as arid,sum(a.user_amount) as bcount
from table1 a,table2 b
where a.user_area=b.area_id
group by arid) c
set b.count=c.bcount
where b.area_id=c.arid;
还专门装了个MYSQL测试了下,测试通过。