2012-05-09 22 views
1

最初に私は捨てたい私はまだかなり新しいSQLです。クエリを作成する最も良い方法は?

テーブルxとyが両方とも正の整数であるとします。

質問1:

指定yiがすべてx値のために存在するかどうかを見つけるための最善の方法は何ですか?

質問2:

指定yiはサイズpのx値のセット内の各xのために存在するかどうかを見つけるための最善の方法は何ですか?

私は最初のケースではn個のセルフジョインを、2番目のケースではp個のセルフジョインを行う方法を見つけました。しかし、これを達成するより良い方法が不思議です。

例テーブル:

x,y 
--- 
1,a 
1,b 
2,a 
3,b 
3,c 
+0

どのようなクエリを試しましたか? – Taryn

答えて

1

あなたの疑惑は正しいです:加入のヒープを使用すると、非常に非効率的です。

質問1:
はここで効率的な方法だ前提が真である場合、これらの二つの値が同じになります

select 
    (select count(distinct x) from t1 where y = '1') as x_count_with_y, 
    (select count(distinct x) from t1) as x_count 

質問2:この値は、セット内のxの数と同じになります前提が真の場合

select count(distinct x) 
from t1 
where y = '1' 
and x in (1,2,3,5,8) 
+0

ありがとう!私は良い方法がなければならないと考えました。 – user1385222

関連する問題