2011-10-30 10 views
1

に参加:私は名前を与えられたクエリを書きたいNHibernateの簡単な自己は、私は、これらのフィールドを持つテーブルが

ID (Primary key) 
Name 
Some more data fields 

は私のIDの行その後、大きなその名前の持つすべての行を与えます。

(はいはい私は、システムがあるに名前が...ユニークではありません知っている。)

私が何かのようにしたい:

select * 
From SomeTable as x 
WHERE x.ID> (Select ID from SomeTable as y where y.Name LIKE :param) 

か:もちろん

SELECT x 
FROM SomeTable as x 
JOIN SomeTable as y ON x.ID > Y.ID 
WHERE Y.Name LIKE :Param 

サブクエリではなく自己結合が必要です。


BTW。 基準もすぎます...

答えて

0

HQLでの結合では実行できません。

しかし、このHQLクエリはOKです:

select f from Foo f where f.id > (select f2.id from Foo f2 where f2.name = :name) 

副選択は、いくつかのIDを返す可能性がある場合、あなたはまた

select f from Foo f where f.id > all (select f2.id from Foo f2 where f2.name = :name) 
+0

がで副選択でHQL結果に副選択を使用しません使用することができますSQL?それは多くのより遅く実行されますか? –

+0

なぜ副選択で必然的にクエリが大幅に遅くなるのでしょうか?それを実行し、副選択なしで照会に対してそれを測定し、Explain計画を調べ、索引を微調整します。 –

関連する問題