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