我试图从NHibernate(通过NHibernate Criteria或LINQ)实现以下SQL。
SELECT MIN(ID)
FROM
(SELECT *
FROM PERSON
WHERE CITY = 'SYDNEY' and ROWNUM < 1000)
即。居住在悉尼市的前1000人的最低身份证。
有什么想法吗?欢呼声。
答案 0 :(得分:2)
这是使用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,但我认为它应该完成这项工作。