--你要先在測試庫測試哦
--建表
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
❷ update sql 兩個關聯的表
一、當用一個表中的數據來更新另一個表中的數據,T-SQL提供多種寫法(下面列出了二種),但建議用第一種寫法,雖然傳統,但結構清晰。
並且要注意,當用一個表中的數據來更新另一個表中的數據時,二個表一定要有關聯!
1.
update t1
set t1.c2 = t2.c2
fro m t2
where t1.c1 = t2.c1
2.
Update t1
set t1.c2 = t2.c2
fro m t1 inner join t2
on t1.c1 = t2.c1
二、FROM 子句中指定的表的別名不能作為 SET column_name 子句中被修改欄位的限定符使用。
例如,下面的內容無效:
UPDATE titles
SET t.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
若要使上例合法,請從列名中刪除別名 t 或使用本身的表名。
1.
UPDATE titles
SET ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
2.
UPDATE titles
SET titles.ytd_sales = t.ytd_sales + s.qty
FROM titles t, sales s
WHERE t.title_id = s.title_id
AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
❸ 求sql語句 多表關聯更新數據
update 表1
set B = 1
from 表2
where 表1.A=表2.A
------
你確認你實際表中的內容的情況真的是你題目描述的情況嗎?
如果是這樣,這條語句是可行的,對了,如果列A中存在空值(null),這條語句是忽視空值的
❹ SQL 中UPDATE用法
Update是一個資料庫SQL語法用語,用途是更新表中原有數據,單獨使用時使用where匹配欄位。
語法為:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
例如:Update table_name Set column_name = new_value Where column_name = some_value
(4)sqlupdate多表關聯擴展閱讀
update使用注意事項:
1、sp_updatestats可以更新統計信息到最新。
2、低內存會導致未被客戶端連接的查詢計劃被清除。
3、修改表結構,修改索引後,查詢計劃會被清除,可以再修改後運行幾遍查詢。
4、使用update時候,order by 會影響查詢速度,where中使用函數則會調用篩選器進行掃描,掃描表要盡量避免。
參考資料來源:網路—update
❺ SQl update 多表關聯 問題
update a
set
A.shl = A.shl - B.shl
from a,b
where
A.spid = B.spid and
A.fdbs = B.fdbs and
A.rq = B.rq and
A.ontime > '17:37:18' and
A.shky = '002' and
A.fdbs = 'HKD'
你是要這個??表的別名自己加下
set A.shl = A.shl =A.shl - B.shl
都告訴你第二行錯誤了
A.shl = A.shl =A.shl - B.shl 是什麼寫法
❻ orcal資料庫 sql update 多表關聯如何更新
update table1 set A3=(select b2 from table2 ,table3 where table1.A1=table2.B1 and table1.A1=table3.C1 and table3.C2='你要的條件')
❼ 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子句所形成的新的結果集上進行的