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 
+0

不幸的是,Progress在update语句中不允许使用两个表。 我也试过 更新表设置(,,)=(选择...),但不能找出一种方法获得每行只有一行更新 – Leo 2009-10-22 14:03:11

+0

@Leo - 检查我更新的答案一个可能的解决方案 – 2009-10-22 17:13:35

在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) 
+0

AFAIK,带JOIN的UPDATE只适用于T-SQL。这绝对不是ANSI SQL。 – 2009-10-22 12:19:00

+0

我更新了答案 – 2009-10-22 12:20:36