根据日期时间列获取最新记录 SQL

Getting most recent record based on datetime column SQL

我正在尝试 select 最近的记录。现在它正在返回所有记录。这是因为,因为我没有放入过滤器来获取最新信息,所以我不确定该怎么做。这是我的代码:

select 
    c.my_Name, a.my_Num, d.myBrand, a.order_bill, a.myDate 
from
    [table1] a
left join 
    [table2] b on a.[myCode] = b.[myCode]
left join 
    [table3] c on c.myTag = b.myTag
left join 
    [table4] d on a.[myHash] = d.[myHash] 
where  
    c.[myName] = 'test name'   

我想从 table 获取最近的记录,我猜最有效的方法是获取最近的 a.myDate.

这样的事情可能会有所帮助

select c.my_Name, a.my_Num, d.myBrand, a.order_bill, MAX(a.myDate) 
from [table1] a
left join [table2]  b on a.[myCode] = b.[myCode]
left join [table3] c on c.myTag=b.myTag
left join [table4] d on a.[myHash] = d.[myHash] 
where  c.[myName] = 'test name'
group by c.my_Name, a.my_Num, d.myBrand, a.order_bill
order by a.myDate DESC

这将抓取最大(最近)a.myDate 的不同记录,按您的其他元素分组。

注意重复项。在 select 语句中使用重复的条件键,或者您绝对 需要 区分的任何元素。

我会写

SELECT TOP 1 
c.my_Name, a.my_Num, d.myBrand, a.order_bill, CONVERT(char(10), a.myDate,126) 
FROM [table1] a
LEFT JOIN [table2] b on a.[myCode] = b.[myCode]
LEFT JOIN [table3] c on c.myTag=b.myTag
LEFT JOIN [table4] d on a.[myHash] = d.[myHash] 
WHERE  c.[myName] = 'test name'  
ORDER BY a.myDate DESC