使用最近日期的另一个表中的最新数据更新表,多个条目

时间:2016-11-28 19:56:31

标签: sql-server

大家晚上好,

我觉得很尴尬地问这个,但我已经被困在这几天了,我非常绝望。我发现之前已经回答过非常类似的问题,但问题是我似乎无法理解发生了什么:How to update another table with the most recent data in SQL?

所以我有两个表Table1和Table2在列标题中是相同的。表2是一个经常更新的表,其中包含更新的位置,移动日期以及由谁移动,有时相同的项目已被移动多次。我想用表2的最新信息更新Table1。

Table1 
BarCode Location    MoveName    Movedate
245208  My Bench    an          24/11/2016
350474  room2       Tom         24/11/2016
350495  My Bench    mieke       04/08/2015
350500  room 4      Tom         17/10/2016

Table2
    F1  F2          F3       F4
350500  My Bench    Gert    24/11/2017  ---most recent
350495  room 8      Mieke   20/11/2016
350495  My Bench    Tom     30/11/2017  ---most recent
350500  room3       jan     17/10/2016
350495  living      Tom     4/08/2015

Solution
Table1
BarCode Location    MoveName    Movedate
245208  My Bench    an          24/11/2016
350474  room2       Tom         24/11/2016
350495  My Bench    Tom         30/11/2017  --updated
350500  My Bench    Gert        24/11/2017  --updated

我已经能够创建一个过滤此表中数据的查询,并且可以进行更新查询以更新表。我似乎无法同时做到这两件事......

非常感谢任何帮助! 但最重要的是我也想了解它,所以我也可以在将来帮助人们。谢谢!

汤姆

1 个答案:

答案 0 :(得分:0)

首先获取update - join,然后执行MAX()之类的

,您需要执行join
update Table1 t1
join ( select F1, max(f4) as maxf4
       from Table2 
       group by F1 ) xxx on t1.BarCode = xxx.F1
set t1.Movedate = xxx.maxf4;

根据您的评论,xxx是一个表别名(OR),在这种情况下是内联视图/内部表表达式别名,以便更好地实现可更新性,因为我使用子查询首先获取分组结果。

再一次,您在评论中说过当我在访问中将它放入SQL查询时,它会给我一个语法错误...

您是否使用MySQL作为RDBMS(自您标记以来,这是您的帖子)?或者您使用MS Access?如果它是MS ACCESS,那么建议的查询将不起作用