1

NHibernate から (NHibernate Criteria または LINQ を介して) 次の SQL を達成しようとしています。

SELECT MIN(ID)
FROM 
(SELECT * 
 FROM PERSON 
 WHERE CITY = 'SYDNEY' and ROWNUM < 1000)

つまり、シドニー市に住んでいる最初の 1000 人の最も低い ID。

何か案は?乾杯。

4

1 に答える 1

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 クエリは ROWNUM の代わりに TOP() を使用しますが、それでうまくいくと思います。

于 2012-11-19T17:23:39.953 に答える