2016-11-28 20 views
0

大家晚上好,更新表与另一个表最近的数据上最新的日期,多个条目

我觉得很不好意思问,但我已经在这个一直停留了几天,现在和我很失望。我发现以前已经回答过非常类似的问题,但问题是我似乎无法理解正在发生的事情:How to update another table with the most recent data in SQL?

因此,我有两个表格Table1和Table2,它们在列标题中是相同的。 Table2是一个表格,通常用更新的位置,它们被移动的日期以及由谁更新,有时同一个项目已被移动几次。我想用2

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 

我已经能够做出对数据进行过滤出这个表的查询表的最新信息来更新目录一,我可以做一个更新查询到updat表。我只是似乎无法同时做到这一点...

任何帮助最受赞赏! 但最重要的是我也想了解它,所以我可以帮助未来的人们。谢谢!

汤姆

回答

0

您需要通过让MAX()第一执行update - join,然后执行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那么建议的查询将不起作用

+0

嗨拉胡尔,感谢您的快速回复!你知道这个很好的教程吗?我一直在查找更新连接,但到目前为止没有找到好的说明。在你提供的代码中,什么是xxx? thx再次! – Tom

+0

好吧,在用新鲜的头再次查看后,我实现了你的建议:'UPDATE Table1 JOIN(SELECT F1,Max(F4)AS maxf4 FROM Table2 GROUP BY F1)xxx ON Table1.BarCode = xxx.F1 SET Table1 .Movedate = xxx.maxf4;'当我将它放入SQL查询中时,它在update语句**中给我一个**语法错误,并且不想保存。任何有关语法错误的想法? thx – Tom

+0

@Tom,如果有帮助,请参阅编辑答案。并发布您的回复。 – Rahul

相关问题