我有一张名为 Product 的表。我需要选择所有具有 MAX ManufatureDate 的产品记录。
这是表数据的示例:
Id ProductName ManufactureDate
1 Car 01-01-2015
2 Truck 05-01-2015
3 Computer 05-01-2015
4 Phone 02-01-2015
5 Chair 03-01-2015
这是结果应该是什么,因为所有记录的最大日期是 05-01-2015 并且这 2 条记录具有这个最大日期:
Id ProductName ManufactureDate
2 Truck 05-01-2015
3 Computer 05-01-2015
我能想到的唯一方法是首先对整个表进行查询以找出最大日期是什么,然后将其存储在变量@MaxManufatureDate 中。然后在 ManufactureDate=@MaxManufactureDate 处进行第二次查询。有人告诉我有更好的方法。
此表中有 100 万条以上记录:
这是我目前的做法:
@MaxManufactureDate = select max(ManufactureDate) from Product
select * from Product where ManufactureDate = @MaxManufactureDate
如果图这比在 where 子句中进行子选择要好得多。还是这与在 where 子句中执行子选择完全相同?我不确定查询是否会针对每一行运行,无论 sqlserver 是否将变量值存储在内存中。