sql裡的update實現多表更新

2022-02-26 16:52:07 字數 1632 閱讀 6053

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....