表下面是我的問題的一個簡化版本:SQL更新一個從另一個表
Table 1
Key1, lastdate, lasttranstype
Table2
Table1key1, trandate, trantype
我想要一個SQL語句來更新lastdate和使用表2與相匹配的記錄上表1 lasttransdate在該表中的每個記錄最新日期
我的DB正在進步。
這是可能的(我當然可以寫一個程序來做到這一點,但我寧願只用SQL語句來做)?
表下面是我的問題的一個簡化版本:SQL更新一個從另一個表
Table 1
Key1, lastdate, lasttranstype
Table2
Table1key1, trandate, trantype
我想要一個SQL語句來更新lastdate和使用表2與相匹配的記錄上表1 lasttransdate在該表中的每個記錄最新日期
我的DB正在進步。
這是可能的(我當然可以寫一個程序來做到這一點,但我寧願只用SQL語句來做)?
update table1, table2
set table1.lastdate = table2.trandate, table1.lasttranstype = table2.trantype
where table1.key1 = table2.table1key1
在T-SQL:
UPDATE Table1
SET lastdate = trandate, lasttranstype = trantype
FROM Table1 INNER JOIN Table2 ON Table1.Key1 = Table2.Table1Key1
編輯: 我不知道進展是一個RDBMS的名稱。以下是否適合你?
UPDATE Table1
SET lastdate =
(SELECT trandate FROM Table2 WHERE Table2.Table1Key1 = Table1.Key1),
lasttranstype =
(SELECT trantype FROM Table2 WHERE Table2.Table1Key1 = Table1.Key1)
AFAIK,帶JOIN的UPDATE只適用於T-SQL。這絕對不是ANSI SQL。 – 2009-10-22 12:19:00
我更新了答案 – 2009-10-22 12:20:36
不幸的是,Progress在update語句中不允許使用兩個表。 我也試過 更新表設置(,,)=(選擇...),但不能找出一種方法獲得每行只有一行更新 – Leo 2009-10-22 14:03:11
@Leo - 檢查我更新的答案一個可能的解決方案 – 2009-10-22 17:13:35