sql關聯表update
⑴ 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多表更新(轉)(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
⑶ SQL update 的更新值來源於另外一個表,如何實現
1、創建兩個測試表,
createtabletest_up_a(idnumber,valuevarchar2(100));
createtabletest_up_b(idnumber,valuevarchar2(100));
2、分別往兩個表中插入數據;
insertintotest_up_avalues(1,'A1');
insertintotest_up_avalues(2,'A2');
insertintotest_up_avalues(3,'A3');
insertintotest_up_avalues(4,'A4');
insertintotest_up_avalues(5,'A5');
insertintotest_up_avalues(6,'A6');
insertintotest_up_bvalues(1,'BBBB1');
insertintotest_up_bvalues(2,'BBBB2');
insertintotest_up_bvalues(5,'BBBB5');
commit;
3、分別查看兩個表中數據;
select'TBL_A',t.*fromTEST_UP_At
unionall
select'TBL_B',t.*fromTEST_UP_Bt
4、執行更新腳本,可以發現TEST_UP_A.VALUE值已變化;
updateTEST_UP_At
sett.value=
(selectb.value
fromTEST_UP_Bb
wheret.id=b.id
andrownum=1)
⑷ SQL兩個關聯表update select查詢結果
updatepriceimacsetpriceimac.數量=t.totalCuntfrom(selecta.imac項目,a.累計+b.數量astotalCuntfrompriceimaca,(selectIMAC,sum(convert(int,數量))數量fromtemp1whereusername='aaa'groupbyimac)bwherea.imac項目=b.imac)ast
⑸ SQL 中UPDATE用法
Update是一個資料庫SQL語法用語,用途是更新表中原有數據,單獨使用時使用where匹配欄位。
語法為:UPDATE 表名稱 SET 列名稱 = 新值 WHERE 列名稱 = 某值
例如:Update table_name Set column_name = new_value Where column_name = some_value
(5)sql關聯表update擴展閱讀
update使用注意事項:
1、sp_updatestats可以更新統計信息到最新。
2、低內存會導致未被客戶端連接的查詢計劃被清除。
3、修改表結構,修改索引後,查詢計劃會被清除,可以再修改後運行幾遍查詢。
4、使用update時候,order by 會影響查詢速度,where中使用函數則會調用篩選器進行掃描,掃描表要盡量避免。
參考資料來源:網路—update
⑹ 多表關聯UPDATE語句怎麼寫呀
update A,B set A.sj1=B.sj2
where
a.hm1=b.hm1
新手,不知道這樣寫對不對。
⑺ 資料庫:更新表需關聯到其它表的update語句怎麼寫
update 用戶余額表 a,銀行貨幣表 b,銀行表 c
set a.余額=0
where a.b_id=b.id and b.銀行id=a.銀行id and a.銀行名='a';
⑻ SQL語句UPDATE 多表關聯的
語句沒有語法錯誤,你用的什麼資料庫?
有些很早期的資料庫,或者是很簡單的資料庫是不支持多表查詢的,比如access97等
你這個在執行的時候有報錯嗎,你能把執行後的日誌打出來嗎?