【发布时间】:2012-10-30 17:01:17
【问题描述】:
我有这个小实体
class Order
{
public long Id;
public DateTime Date;
public long ProductId;
}
我想在由ProductId 分组的订单中选择具有MAX(Date) 的实体的Id。
对 (MAX(Date), ProductId) 不是唯一的,所以这个查询是错误的:
select o.Id
from Order o
where o.Date =
(select max(o2.Date)
from Order o2
where o2.ProductId = o.ProductId);
你有什么想法吗?
基本上我想要的是从组中获取最新的订单,所以如果我假设更大的Id == 更新的Order 这个:
select o
from Order o
where o.Id in
(select max(o2.Id)
from Order o2
group by o2.ProductId);
对我有用。有没有更好的解决方案?
【问题讨论】:
-
并非总是如此,如果有人更改/更新订单日期,那么您的查询将不会返回正确的结果。
-
100% 正确 ;-) 因此我要求更好的解决方案