使用where子句选择具有最大DateTime的所有记录

时间:2018-07-12 14:58:34

标签: sql sql-server

我是SQL Server 2008 Express的新手。

我有一个名为Table1的表,其中有First_NameOrder_Date_Time列。

我想要一个SQL查询,该查询可以选择First_Name = Alex且最大为Order_Date_Time的所有记录。该表包含多个日期,这些日期具有完全相同的日期。

有人知道该怎么做吗?

4 个答案:

答案 0 :(得分:2)

这应该给您正确的结果,并且非常简洁。

SELECT *
FROM Table1
WHERE Order_Date_Time = (select MAX(Order_Date_Time) FROM Table1) and First_name = 'Alex'

答案 1 :(得分:0)

一种具有正确索引性能的简单方法是:

select t1.*
from table1 t1
where t1.order_date_time = (select max(tt1.order_date_time) from table1 tt1 where tt1.first_name = t1.first_name);

table1(name, order_date_time)中的正确索引。

答案 2 :(得分:0)

您可以使用row_number()函数:

select top (1) with ties t1.*
from table1 t1
where t1.First_Name = 'Alex'
order by row_number() over(partition by t1.first_name order by t1.order_date_time desc);

答案 3 :(得分:0)

这将给出包含Alex的所有记录。这似乎就是您从评论中看到的内容。

SELECT First_Name, Order_Date_Time
FROM Table1
WHERE First_Name = 'Alex'