SQL Update多表聯合更新的方法

2021-06-27 21:58:59 字數 3727 閱讀 9105

sql update多表聯合更新的方法 

(1) sqlite 多表更新方法

//----------------------------------

update t1 set col1=t2.col1

from table1 t1

inner join table2 t2 on t1.col2=t2.col2

這是乙個非常簡單的批量更新語句 在sqlserver中支援此語法 sqlite中卻不支援

sqlite中可轉換為 如下語法 

update table1 set col1=(select col1 from table2 where col2=table1.col2)

update ta_jbnt_tzhd_pht_area_xiang set t1=(select sys_xzqhdm.name from sys_xzqhdm 

where t2=sys_xzqhdm.code) 

(2) sql server 多表更新方法

//----------------------------------

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

access資料庫多表更新方法

x = "update " + dltb + " a inner join tbarea2 b  on a.objectid=b.fid  set a." + fd_dltb_xzdwmj + "=b.area_xzdw, a." + fd_dltb_lxdwmj + "=b.area_lxdw";

sqllist.add(x);

(3) oracle 多表更新方法

//----------------------------------

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)

(4) mysql 多表更新方法

//----------------------------------

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

另外一篇類似的文章,也轉過來對照看。

sql update select語句

最常用的update語法是:

update

set = , set =

www.2cto.com  

如果我的更新值value是從一條select語句拿出來,而且有很多列的話,用這種語法就很麻煩

第一,要select出來放在臨時變數上,有很多個哦

第二,再將變數進行賦值。

列多起來非常麻煩,能不能像insert那樣,把整個select語句的結果進行插入呢?就好象下面

insert into table1

(c1, c2, c3)

(select v1, v2, v3 from table2)

答案是可以的,具體的語法如下:

update

set (,) = (

select (, )

from

where = )

where ;

www.2cto.com  

下面是這樣乙個例子:

兩個表a、b,想使b中的memo字段值等於a表中對應id的name值 

表a:id, name 

1 王 

2 李 

3 張 

表b:id,clientname    1 

2  3 

(ms sql server)語句:update b   set   clientname    = a.name    from a,b    where a.id = b.id  

(oralce)語句:update b   set   (clientname)    =   (select name from a where b.id = a.id)

update set from 語句格式

當where和set都需要關聯乙個表進行查詢時,整個update執行時,就需要對被關聯的表進行兩次掃瞄,顯然效率比較低。

對於這種情況,sybase和sql server的解決辦法是使用update...set...from...where...的語法,實際上就是從源表獲取更新資料。

在 sql 中,表連線(left join、right join、inner join 等)常常用於 select 語句,其實在 sql 語法中,這些連線也是可以用於 update 和 delete 語句的,在這些語句中使用 join 還常常得到事半功倍的效果。  www.2cto.com  

update t_orderform set t_orderform.sellerid =b.l_tuserid

from t_orderform a left join t_productinfo   b on b.l_id=a.productid

用來同步兩個表的資料!

oralce和db2都支援的語法:

update a set (a1, a2, a3) = (select b1, b2, b3 from b where a.id = b.id)

ms sql server不支援這樣的語法,相對應的寫法為:

update a  set a1 = b1, a2 = b2, a3 = b3  from a left join b on a.id = b.id

個人感覺ms sql server的update語法功能更為強大。ms sql server的寫法:

update a set a1 = b1, a2 = b2, a3 = b3 from a, b where a.id = b.id

在oracle和db2中的寫法就比較麻煩了,如下:

update a set (a1, a2, a3) = (select b1, b2, b3 from b where a.id = b.id)

where id in (select b.id from b where a.id = b.id)

SQL Update多表聯合更新的方法

sql update多表聯合更新的方法 1 sqlite 多表更新方法 update t1 set col1 t2.col1 from table1 t1 inner join table2 t2 on t1.col2 t2.col2 這是乙個非常簡單的批量更新語句 在sqlserver中支援此語法...

SQL Update多表聯合更新的方法

sql update多表聯合更新的方法 1 sqlite 多表更新方法 update t1 set col1 t2.col1 from table1 t1 inner join table2 t2 on t1.col2 t2.col2 這是乙個非常簡單的批量更新語句 在sqlserver中支援此語法...

SQL Update多表聯合更新的方法

有些時候我們需要同時更新多個表中的資料那麼就需要用到下面方法了 1 sqlite 多表更新方法 複製 如下 update t1 set col1 t2.col1 from table1 t1 inner join table2 t2 on t1.col2 t2.col2 這是乙個非常簡單的批量更新語...