兩個關聯表如何更新其中一個表的資料

來源:互聯網
上載者:User

 

兩個關聯表如何更新其中一個表的資料?今天遇到一個客戶的資料更新問題,兩個相關聯的表,一個主表用於儲存單據主要資訊,一個副表用於儲存單據的明細資訊;現在要把主表的其中一個欄位的資料更新到副表的一個欄位中儲存。精通的SQL文法的,當然是很簡單了。下面我作個詳細的說明。假設A表是主表,有單號order_id、開單人operator、開單日期oper_date、備忘memo等;B表是副表,有單號order_id、序號id、商品編碼code、商品名稱name、備忘memo等。A表的備忘是有資料的,B表的備忘沒有資料,現在要把A表的資料更新到B表,並且B表有資料的不能更新了。A表與B表是以單號來關聯的。更新資料的SQL文法如下:
update  B  set B.memo=A.memo  from  B,A
where A.order_id=B.order_id and (B.memo is null or B.memo='');

A、B表的order_id是索引,而且是關聯欄位,所以要放在Where條件作為第一條件。B表的備忘為空白值,或等於沒有值的,才能更新。

--------------------------樣本查詢:SELECT TOP 10 A.F_DATE,B.F_DATE  FROM M..C1T06 A, M..C1T15 B WHERE A.F_CODE=B.F_CODE AND A.F_CQRQ =B.F_CQRQ AND B.F_DATE IS NULL 樣本更新:UPDATE B SET B.F_DATE=A.F_DATE FROM C1T06 A, C1T15 B WHERE A.F_CODE=B.F_CODE AND A.F_CQRQ =B.F_CQRQ AND B.F_DATE IS NULL 

 

-----------------------------------------------------------

 

執行個體:

一、建立測試表
CREATE TABLE t_user (
ID int identity PRIMARY KEY,
UserID varchar(50) not null,
UserName varchar(50) null,
deptID int not null,
phone varchar(50) null,
fax varchar(50) null
)

CREATE TABLE t_dept (
ID int identity PRIMARY KEY,
DeptName varchar(50) null,
phone varchar(50) null,
fax varchar(50) null
)

INSERT t_user
SELECT N'001',N'張三',1,N'88888001',N'99999001'
UNION  ALL SELECT N'002',N'李四',2,N'88888002',N'99999002'
UNION  ALL SELECT N'003',N'王五',2,N'88888003',N'99999003'
UNION  ALL SELECT N'004',N'趙六',3,N'88888004',N'99999004'

INSERT t_dept
SELECT N'開發部',N'88888011',N'99999011'
UNION  ALL SELECT N'市場部',N'88888022',N'99999022'
UNION  ALL SELECT N'售後部',N'88888033',N'99999033'

二、sql更新(每次執行update後都還原t_user資料)

1、update t_user set u.phone=d.phone, u.fax=d.fax from t_user u, t_dept d where u.deptID=d.ID

報錯:無法綁定由多個部分組成的標識符 "u.phone"。
2、update u set u.phone=d.phone, u.fax=d.fax from t_user u, t_dept d where u.deptID=d.ID

 

 正確

select * from t_user

 

 ID  UserID  UserName  deptID  phone  fax
 1  001  張三  1  88888011  99999011
 2  002  李四  2  88888022  99999022
 3  003  王五  2  88888022  99999022
 4  004  趙六  3  88888033  99999033

 

 

3、update t_user u set u.phone=d.phone, u.fax=d.fax from t_dept d where u.deptID=d.ID

報錯:'u' 附近有語法錯誤。

4、update t_user set phone=d.phone, fax=d.fax from t_dept d where deptID=d.ID

正確,結果同2

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.