當前位置:首頁 » 編程語言 » sql關聯表更新

sql關聯表更新

發布時間: 2022-04-28 07:49:49

㈠ 請教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、【如果存在測試臨時表,則先刪除,便於重復執行SQL】:

IF OBJECT_ID('tempdb..#SourceTable1') IS NOT NULL DROP TABLE #SourceTable1;

IF OBJECT_ID('tempdb..#SourceTable2') IS NOT NULL DROP TABLE #SourceTable2;

IF OBJECT_ID('tempdb..#UpdateTable') IS NOT NULL DROP TABLE #UpdateTable;

(2)sql關聯表更新擴展閱讀

SQL Aggregate 函數

SQL Aggregate 函數計算從列中取得的值,返回一個單一的值。

有用的 Aggregate 函數:

1、AVG() - 返回平均值

2、COUNT() - 返回行數

3、FIRST() - 返回第一個記錄的值

4、LAST() - 返回最後一個記錄的值

5、MAX() - 返回最大值

6、MIN() - 返回最小值

7、SUM() - 返回總和

SQL Scalar 函數

SQL Scalar 函數基於輸入值,返回一個單一的值。

有用的 Scalar 函數:

1、UCASE() - 將某個欄位轉換為大寫

2、LCASE() - 將某個欄位轉換為小寫

3、MID() - 從某個文本欄位提取字元

4、LEN() - 返回某個文本欄位的長度

5、ROUND() - 對某個數值欄位進行指定小數位數的四捨五入

6、NOW() - 返回當前的系統日期和時間

7、FORMAT() - 格式化某個欄位的顯示方式

㈢ 在sql裡面如何實現關聯表數據的更新

1.建個觸發器
2.建立個物化試圖(速度快)

CREATE MATERIALIZED VIEW LOG ON name--建立物化視圖日誌保存在特定的表空間
tablespace users; --指定表空間

drop materialized view name;
create materialized view name--創建物化試圖
refresh fast
on commit --在提交後立即刷新
as
select
A.*
from tablename A

㈣ sql 幾張表互相關聯 更改一張資料庫信息 相應的更新相關聯的數據

oracle下:
oracle只有級聯刪除,沒有級聯更新(其實是有的,只是沒有on update cascade),所以要實現級聯更新有兩種方法:
一、在約束中定義延遲更新:alter table child_table
add constraint fk_child_parent
foreign key (id)
references parent_table (id)
initially deferred deferrable;
-- initially deferred deferrable; 這是延遲oracle的一致性檢查,通過這個我們可以分別更新主表和子表,然後再提交,這樣就能驗證通過了,有點麻煩,呵呵,還是用觸發器吧
二、通過觸發器實現:
CREATE OR REPLACE TRIGGER ID_TRG AFTER UPDATE ON Section FOR EACH ROW
BEGIN
UPDATE Employee SET 部門=:NEW.部門WHERE 部門=:OLD.部門;
END;

㈤ SQLSERVER 多表關聯如何更新

update 表C

set 表C.c3=表B.b3
from 表C
where 表C.c1=表A.a2 and 表C.c2=表B.b2
您說的還沒搞明白,從語法上講應該是這樣的,不知道行不行,只做過2個表之間關聯更新的,您這個要3個表,而且B表和 C表的關聯有沒有呢?

㈥ sql可以兩個表一起更新數據嗎

如果兩個表有關聯的話是可以的,比如A表的id和b表的b_id外鍵關系就可以
update a left join b on a.id = b.b_id set a.name = '',b.name='' (where條件)

㈦ 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子句所形成的新的結果集上進行的

㈧ sql怎樣把一個表的數據更新到另一個表

如果都是SQL的資料庫的話,在第二步的時候就默認選擇SQL Server 的Microsoft OLE DB提供程序 就可以了。

1、打開企業管理器,打開要導入數據的資料庫,在表上按右鍵,所有任務-->導入數據,彈出DTS導入/導出向導,按 下一步 ;

2、選擇數據源 Microsoft Excel 97-2000,文件名 選擇要導入的xls文件,按 下一步;

3、選擇目的 用於SQL Server 的Microsoft OLE DB提供程序,伺服器選擇本地(如果是本地資料庫的話,如 VVV),使用SQL Server身份驗證,用戶名sa,密碼為空,資料庫選擇要導入數據的資料庫(如 client),按 下一步;

4、選擇 用一條查詢指定要傳輸的數據,按 下一步;

5、按 查詢生成器,在源表列表中,有要導入的xls文件的列,將各列加入到右邊的 選中的列 列表中,這一步一定要注意,加入列的順序一定要與資料庫中欄位定義的順序相同,否則將會出錯,按 下一步;

6、選擇要對數據進行排列的順序,在這一步中選擇的列就是在查詢語句中 order by 後面所跟的列,按 下一步;

7、如果要全部導入,則選擇 全部行,按 下一步;

8、則會看到根據前面的操作生成的查詢語句,確認無誤後,按 下一步;

9、會看到 表/工作表/Excel命名區域 列表,在 目的 列,選擇要導入數據的那個表,按 下一步;

10、選擇 立即運行,按 下一步;

11、會看到整個操作的摘要,按 完成 即可。

㈨ 如何實現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

㈩ sql兩個表之間內容更新問題

sql兩個表之間內容更新問題
當用一個表中的數據來更新另一個表中的數據,T-SQL提供多種寫法(下面列出了二種),但建議用第一種寫法,雖然傳統,但結構清晰。
並且要注意,當用一個表中的數據來更新另一個表中的數據時,二個表一定要有關聯!

熱點內容
滑鼠如何編程 發布:2025-05-16 02:29:09 瀏覽:815
安卓70能用什麼軟體 發布:2025-05-16 01:45:09 瀏覽:480
編程發展史 發布:2025-05-16 01:38:52 瀏覽:528
android圖片氣泡 發布:2025-05-16 01:38:40 瀏覽:886
文件加密編輯器下載 發布:2025-05-16 01:30:41 瀏覽:343
linuxapacheyum安裝 發布:2025-05-16 01:30:31 瀏覽:476
大連賓利浴池wifi密碼是多少 發布:2025-05-16 01:25:36 瀏覽:172
緩存數據生產服務 發布:2025-05-16 01:08:58 瀏覽:585
普通電腦伺服器圖片 發布:2025-05-16 01:04:02 瀏覽:971
伺服器地址和埠如何區分 發布:2025-05-16 01:03:17 瀏覽:834