私は、この列にキー、タイプ、カルチャを持つこのテーブルを持っています。クエリを選択し、述語値を確認しない
キーとカルチャはPKです。
私はクエリ実行前にキーとカルチャの値を知っています。
select * from resources r where r.CULTURE = 'sk' and r.KEY = 'test';
しかし、私は文化=「SK」とキー=「テスト」
私は、この列にキー、タイプ、カルチャを持つこのテーブルを持っています。クエリを選択し、述語値を確認しない
キーとカルチャはPKです。
私はクエリ実行前にキーとカルチャの値を知っています。
select * from resources r where r.CULTURE = 'sk' and r.KEY = 'test';
しかし、私は文化=「SK」とキー=「テスト」
SELECT * FROM resources AS r WHERE r.type =
(SELECT type FROM resources s where s.culture= 'sk' and s.key= 'test')
culture
とレコードと同じ種類でも、他のすべてのレコードを選択することになるかを選択を実行したいのですがkey
はPKなので、サブクエリの型の値は1つだけ戻されます。その結果は、その型のすべての行を取得するために使用されます。サブクエリが複数の値を返す場合は、=
の代わりにIN
を使用できます。
+1このクエリでは 'type'にインデックスを付けることを忘れないでください。 – Tomalak
参加が悪くなると思いますか? – user256034
ジョインを使用すると、パフォーマンスの問題が解決される可能性があります。
SELECT r.*
FROM resources r
INNER JOIN resources r2
ON r.type = r2.type
WHERE r2.CULTURE = 'sk'
AND r2.KEY = 'test'
これがよりうまく実行されますかhttp://stackoverflow.com/questions/6676783/select-query-and-unknow-predicate-value/6676822#6676822? – user256034
試してみてください!それは、インデックス、統計情報に依存します... –
フィールド名に 'KEY'を付けるのは良いことではありません。ほとんどのRDBMSでは予約語です。 –