大家晚上好,
我觉得很尴尬地问这个,但我已经被困在这几天了,我非常绝望。我发现之前已经回答过非常类似的问题,但问题是我似乎无法理解发生了什么: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
我已经能够创建一个过滤此表中数据的查询,并且可以进行更新查询以更新表。我似乎无法同时做到这两件事......
非常感谢任何帮助! 但最重要的是我也想了解它,所以我也可以在将来帮助人们。谢谢!
汤姆
答案 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
,那么建议的查询将不起作用