SQL 根據關聯表更新主表中字段數據


今天遇到一個客戶的數據更新問題,兩個相關聯的表,一個主表用於保存單據主要信息,一個副表用於保存單據的明細信息;現在要把主表的其中一個字段的數據更新到副表的一個字段中保存。精通的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 

 

例:

UPDATE CSGK_VideoLog SET CSGK_VideoLog.Name = CSGK_Users.Name from CSGK_VideoLog,CSGK_Users  where CSGK_Users.UserId=CSGK_VideoLog.UId and (CSGK_VideoLog.WTime > '2017-09-04 12:00:00.000')

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM