我是SQL Server 2008 Express的新手。
我有一个名为Table1
的表,其中有First_Name
和Order_Date_Time
列。
我想要一个SQL查询,该查询可以选择First_Name
= Alex
且最大为Order_Date_Time
的所有记录。该表包含多个日期,这些日期具有完全相同的日期。
有人知道该怎么做吗?
答案 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'