在一次成績查詢系統的修改中,改動了一張表,在一張表裏增長了一個字段,如今須要將另一個表的對應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測試了下,測試經過。