sql裡的update實現多表更新
在開發中,資料庫來回換,而有些關鍵性的語法又各不相同,這是一件讓開發人員很頭痛的事情.本文總結了update語句更新多表時在sql server,oracle,mysql三種資料庫中的用法.我也試了sqlite資料庫,都沒成功,不知是不支援多表更新還是咋的. 在本例中: 我們要用表gdqlpj中的gqdltks,bztks欄位資料去更新landleveldata中的同欄位名的資料,條件是當landleveldata 中的geo_code字段值與gdqlpj中的lxqdm字段值相等時進行更新.
sql server語法:update set | @variable = expression | @variable = column = expression } [ ,...n ] [ ,...n ] ] [ where < search_condition > ] } | [ where current of | cursor_variable_name } ] } [ option ( < query_hint > [ ,...n ] ) ]
sql server示例: update a set a.gqdltks=b.gqdltks,a.bztks=b.bztks from landleveldata a,gdqlpj b where a.geo_code=b.lxqdm
oracle語法: update updatedtable set (col_name1[,col_name2...])= (select col_name1,[,col_name2...] from srctable [where where_definition])
oracel 示例: update landleveldata a set (a.gqdltks, a.bztks)= (select b.gqdltks, b.bztks from gdqlpj b where a.geo_code=b.lxqdm)
mysql語法: update table_references set col_name1=expr1 [, col_name2=expr2 ...] [where where_definition]
mysql 示例: update landleveldata a, gdqlpj b set a.gqdltks= b.gqdltks, a.bztks= b.bztks where a.geo_code=b.lxqdm
有a、b張表,其記錄如下:
a表c1 c2
--------------
1 a1
2 a2
3 a3
8 a8
b表c1 c3
--------------
1 b1
2 b1
3 b3
10 b10
a.c1與b.c1相等,用一條sql語句,實現a.c2的值更新為b.c3
------------------------
update a
set a.c2 =b.c3
from a ,b
where a.c1=b.c1
update a
set a.c2 =b.c3
from a inner join b on a.c1=b.c1
注意:update後面是不能跟多表的,但跟在from子句後面
sql裡的update實現多表更新
在開發中,資料庫來回換,而有些關鍵性的語法又各不相同,這是一件讓開發人員很頭痛的事情.本文總結了update語句更新多表時在sql server,oracle,mysql三種資料庫中的用法.我也試了sqlite資料庫,都沒成功,不知是不支援多表更新還是咋的.在本例中 我們要用表gdqlpj中的gqd...
多表關聯的update語句
mssql的多表關聯的update語句 例如a表 存在一下字段 aid a1 a2 a3 a4 b表中存在字段 bid b1 b2 b3 b4 如果實現用b表的所有字段更新a表中相應的字段,在ms sql server裡面可以寫成 update a set a1 b.b1,a2 b.b2,a3 b....
多表關聯的update語句
mssql的多表關聯的update語句 例如a表 存在一下字段 aid a1 a2 a3 a4 b表中存在字段 bid b1 b2 b3 b4 如果實現用b表的所有字段更新a表中相應的字段,在ms sql server裡面可以寫成 update a set a1 b.b1,a2 b.b2,a3 b....