在一次成绩查询系统的修改中,改动了一张表,在一张表里增长了一个字段,如今须要将另一个表的对应ID复制过来,因为不常用这样的SQL操做,甚至想到了写个循环来处理。可是我又以为SQL应该能够实现这样的功能,就查了查手册,果真简单,有个update ... from ... 的语法。例子以下: html
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语句以下: mysql
1
|
UPDATEASETA.subject_id=B.sb_idFROMBWHEREB.student_id=A.id
|
更新:上面一条语句只适合在mssql server下面用,在mysql里应该用下面一条: sql
1
|
UPDATEA, BSETA.subject_id=B.sb_idWHEREB.student_id=A.id
|
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测试了下,测试经过。