sql關聯更新
A. sql可以兩個表一起更新數據嗎
如果兩個表有關聯的話是可以的,比如A表的id和b表的b_id外鍵關系就可以
update a left join b on a.id = b.b_id set a.name = '',b.name='' (where條件)
B. 請教sql語句 如何實現關聯表欄位更新
UPDATE多表更新(轉)(2008-05-12 15:29:04)
轉載標簽:update多表更新sql 分類:php網路編程
在開發中,資料庫來回換,而有些關鍵性的語法又各不相同,這是一件讓開發人員很頭痛的事情.本文總結了Update語句更新多表時在SQL Server,Oracle,MySQL三種資料庫中的用法.我也試了SQLite資料庫,都沒成功,不知是不支持多表更新還是咋的.
在本例中: 我們要用表gdqlpj中的gqdltks,bztks欄位數據去更新landleveldata中的同欄位名的數據,條件是當 landleveldata 中的GEO_Code欄位值與gdqlpj中的lxqdm欄位值相等時進行更新.
SQL Server語法:UPDATE { table_name WITH ( < table_hint_limited > [ ...n ] ) | view_name | rowset_function_limited } SET { column_name = { expression | DEFAULT | NULL } | @variable = expression | @variable = column = expression } [ ,...n ] { { [ FROM { < table_source > } [ ,...n ] ] [ WHERE < search_condition > ] } | [ WHERE CURRENT OF { { [ GLOBAL ] cursor_name } | 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
C. 如何實現MSSQL資料庫多表關聯更新
--你要先在測試庫測試哦
--建表
createtablet_bd_item_info
(
item_noVarchar(20),
item_subnoVarchar(20)
)
--測試數據
insertintot_bd_item_infovalues('12345678','98765432')
insertintot_bd_item_infovalues('123456789012','12345678')
insertintot_bd_item_infovalues('1234567801234','98976543')
--得到需要替換的item_no和item_subno
Select*into#TmpFrom
(
Select*,ROW_NUMBER()over(partitionbyitem_subnoorderbyitem_no)Asid
Fromt_bd_item_infoA
Wherelen(item_no)in(12,13)andLEN(item_subno)=8
Andnotexists(Select*Fromt_bd_item_infoBwhereB.item_no=A.item_subno)
)SwhereID=1
--替換(包含item_no的所有表都替換)
Execsp_MSforeachtable@command1="Update?Setitem_no=B.item_subnoFrom?Ainnerjoin#TmpBonA.item_no=B.item_no",@whereand="Ando.namein(selectdistinctobject_name(object_id)fromsys.columnswherename='item_no')"
--刪除臨時表
DropTable#Tmp
D. SQL Server資料庫多表關聯如何更新
一條Update更新語句是不能更新多張表的,除非使用觸發器隱含更新。而表的更新操作中,在很多情況下需要在表達式中引用要更新的表以外的數據。我們先來討論根據其他表數據更新你要更新的表
一、MS SQL Server 多表關聯更新
sql server提供了update的from 子句,可以將要更新的表與其它的數據源連接起來。雖然只能對一個表進行更新,但是通過將要更新的表與其它的數據源連接起來,就可以在update的表達式 中引用要更新的表以外的其它數據。
一般形式:
update A SET 欄位1=B表欄位表達式, 欄位2=B表欄位表達式 from B WHERE 邏輯表達式
例如:
UPDATE dbo.Table2
SET dbo.Table2.ColB = dbo.Table2.ColB + dbo.Table1.ColB
FROM dbo.Table2
INNER JOIN dbo.Table1
ON (dbo.Table2.ColA = dbo.Table1.ColA);
實際更新的操作是在要更新的表上進行的,而不是在from子句所形成的新的結果集上進行的
E. SQL中如何設置級聯更新
兩種方法:
1.把兩個表需要關聯的欄位,設置主外鍵關聯,然後設置它們級聯更新和刪除就行了
2.呢,就是給一個表建立觸發器,當插入或更新的時候,自動更新另一個表。
試試吧!
F. SQL如何更新關聯查詢出來的虛擬表數據
1建立一個觸發
2物化試圖建立一個(快)
創建物化視圖日誌上的名字 - 。建立物化存儲在特定的表空間
表空間的用戶視圖日誌; - 指定表空間
下降物化視圖的名稱;
創建物化視圖的名稱 - 創建物化試圖
刷新提交快速
- 作為<br刷新後立即提交
br選擇/> A. *
從一個表名