sql update語句的多表更新試驗
sql update語句,可以實現(xiàn)對多表更新,下面就為您詳細介紹該方法,供您參考,希望對您學(xué)習(xí)sql update語句能夠有些許幫助。
受access的sql語句的影響,一直習(xí)慣的是用 update (連接表) set ... where ...,壞處是寫起來很復(fù)雜,別名一大堆,事后自己都看不懂。
發(fā)現(xiàn)還其實可以直接就可以對多表更新
UPDATE a
SET a.t2 = b.t2
FROM x1 a, x2 b
WHERE a.t1 = b.t1
作一些試驗:
x1表:
t1 t2 f_id
a 1
b 2
c 3
a 4
b 5
c 6
x2表
t1 t2 f_id
a 7
b 8
c 9
試驗1:
UPDATE a
SET a.t2 = b.t2
FROM x1 a, x2 b
WHERE a.t1 = b.t1
結(jié)果:x1表中6行都被更新了。(起碼是左連接的方式)
試驗2:
UPDATE b
SET b.t2 = a.t2
FROM x1 a, x2 b
WHERE a.t1 = b.t1
結(jié)果為更新了三行,且數(shù)值為4,5,6。即用x1后面的三行去更新的。
試驗3:
UPDATE a
SET a.t2 = b.t2
FROM x1 a, x2 b
結(jié)果六行全變9。
結(jié)論:用這種方式,兩個表之間不是left join或right join 或者inner join,而是一種完全連接的方式(where對全連接的結(jié)果進行了限制)。對某列的更新操作,在該列值有多行時,只有***一行生效。
了解了工作方式,就可以大膽應(yīng)用了。
【編輯推薦】