1

最初に、私はまだSQLにかなり慣れていないことを捨てたいと思います。

列 x と y を持つテーブルがあるとします。どちらも正の整数です。

質問1:

y指定された値iがすべての値に対して存在するかどうかを確認する最良の方法は何xですか?

質問2:

サイズ pの一連の値のそれぞれについて、指定されたyiが存在するかどうかを調べる最良の方法は何ですか?xx

最初のケースでは n 個の自己結合を行う方法、または 2 番目のケースでは p 個の自己結合を行う方法を見つけました。しかし、これを達成するためのより良い方法に興味があります。

テーブルの例:

x,y
---
1,a
1,b
2,a
3,b
3,c
4

1 に答える 1

1

あなたの疑いは正しいです。結合のヒープを使用することは非常に非効率的です。
効率的な方法は次のとおりです。

質問 1: 前提が正しい場合、これら 2 つの値は同じになります

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)
于 2012-05-09T17:30:22.023 に答える