【发布时间】:2010-04-25 21:19:19
【问题描述】:
一个用户可以有多个地址,但我想检索该用户的最新条目。
在 sql 中我会这样做:
SELECT TOP 1 *
FROM UserAddress
WHERE userID = @userID
如何创建具有相同逻辑的条件查询?
有 TOP 功能吗?
【问题讨论】:
标签: c# asp.net nhibernate
一个用户可以有多个地址,但我想检索该用户的最新条目。
在 sql 中我会这样做:
SELECT TOP 1 *
FROM UserAddress
WHERE userID = @userID
如何创建具有相同逻辑的条件查询?
有 TOP 功能吗?
【问题讨论】:
标签: c# asp.net nhibernate
假设您有一些时间戳列(例如 InsertedAt):
User user = ...;
var crit = DetachedCriteria.For<UserAddress>()
.Add(Restrictions.Eq("User", user))
.AddOrder(Order.Desc("InsertedAt"))
.SetMaxResults(1);
【讨论】:
由于表格内容的顺序会发生变化(重新索引等),我建议您使用一些描述的时间戳来指示哪个是最新的。然后获取按该字段排序的第一个。
【讨论】:
This post 有如何做到这一点的答案,但你不应该总是依赖TOP 来获取最新条目! (假设按时间顺序)
使用时间/索引列根据时间戳值获取最新条目。
【讨论】: