Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 根据另一个表中的最大日期进行选择_Sql_Sql Server - Fatal编程技术网

Sql 根据另一个表中的最大日期进行选择

Sql 根据另一个表中的最大日期进行选择,sql,sql-server,Sql,Sql Server,我试图通过从另一个表中获取基于MAX Last update的国家来执行一个简单的Select查询 Order# 1 2 3 4 另一个表包含国家/地区和上次更新: Order# Cntry Last Update 1 12/21/2019 9:19 PM 1 US 1/10/2020 1:07 AM 2 JP 7/29/2020 12:15

我试图通过从另一个表中获取基于MAX Last update的国家来执行一个简单的Select查询

Order#         
1
2
3
4
另一个表包含国家/地区和上次更新:

Order#    Cntry           Last Update
1                    12/21/2019  9:19 PM
1          US        1/10/2020  1:07 AM
2          JP        7/29/2020  12:15 PM
3          CA        4/12/1992  2:04 PM
3          GB        11/6/2001  9:26 AM
3          DK        2/1/2005  3:04 AM
4          CN        8/20/2013  12:04 AM
4                    10/1/2015  4:04 PM
我期望的结果是:

Order#     Country
1            US
2            JP
3            DK
4            
不确定这是正确的解决方案。到目前为止,我一直坚持这一点:

SELECT Main.[Order#], tempTable.Cntry
FROM Main 
LEFT JOIN (

SELECT [Order#], Cntry, Max([Last Update]) as LatestDate FROM Country
GROUP BY [Order#], Cntry

) as tempTable ON Main.[Order#] = tempTable.[Order#];


提前谢谢

在SQL Server中,可以使用相关子查询:

update main
    set country = (select top (1) s.country
                   from secondtable s
                   where s.order# = main.order#
                   order by s.lastupdate desc
                  );
编辑:

一个select看起来非常相似:

select m.*,
       (select top (1) country
        from secondtable s
        where s.order# = main.order#
        order by s.lastupdate desc
       )
from main m

我没有时间尝试使用示例数据,但这就是您想要的吗

select order orde, cntry
from table
where last_update = 
(select max(last_update) from table where order = orde)

如果只需要订单号和国家,可能不需要两张表:

SELECT distinct order, country
FROM
(
SELECT  order, LAST_VALUE (country) OVER (PARTITION by [order] order by last_update) country FROM Country
) X

请用您正在运行的数据库标记您的问题:mysql、oracle、sql server。。。?不同数据库的更新语法不尽相同。谢谢您的回答!我很抱歉。这是我的错。它应该是
Select
而不是
Update
。希望你能帮我度过难关。谢谢@库拉波。我调整了答案。我还注意到你正在使用SQL Server,所以我也适应了。对不起。这是我的错。它应该是
Select
而不是
Update
。编辑我的问题。很抱歉