我正在尝试从 NHibernate 实现以下 SQL(通过 NHibernate Criteria 或 LINQ)。
SELECT MIN(ID)
FROM
(SELECT *
FROM PERSON
WHERE CITY = 'SYDNEY' and ROWNUM < 1000)
即居住在悉尼市的前 1000 人中的最低 ID。
有任何想法吗?干杯。
我正在尝试从 NHibernate 实现以下 SQL(通过 NHibernate Criteria 或 LINQ)。
SELECT MIN(ID)
FROM
(SELECT *
FROM PERSON
WHERE CITY = 'SYDNEY' and ROWNUM < 1000)
即居住在悉尼市的前 1000 人中的最低 ID。
有任何想法吗?干杯。
这是使用 Criteria API 的类似查询:
session.CreateCriteria<Person>()
.SetProjection(Projections.Min("ID"))
.Add(Subqueries.PropertyIn("ID",
DetachedCriteria.For<Person>()
.Add(Restrictions.Eq("CITY", "SYDNEY"))
.SetProjection(Projections.Property("Id"))
.SetMaxResults(1000)))
.List();
生成的 SQL 查询使用 TOP() 而不是 ROWNUM,但我认为它应该可以完成这项工作。