0

次の表があります (これは、バナー ID とそれぞれに使用可能なサイズのリストです)。

bannerid, bannersize
--------------------
1, 16
1, 32
1, 128
2, 16
2, 32
2, 128
2, 256
2, 512
3, 16
3, 32
3, 64
3, 128
3, 256
3, 512
3, 1024

すべての可能なサイズ (16、32、64、128、256、512、1024) を持つすべてのバナー ID のリストを生成できる必要があります。

したがって、この例では、結果は次のようになります。

bannerid
--------
3

上記のように、bannerid 3 には可能なすべてのサイズがあるため (1 と 2 にはいくつかのサイズがありませんでした)。

これを達成するための良い方法は何ですか? 同じテーブルで 7 回結合を行い、すべての可能なサイズの組み合わせが存在することを確認するよりも良い方法があると思います。

ありがとう!

4

3 に答える 3

3
select bannerid, count(bannersize) 
from tbl_banners  
where bannersize in (16, 32, 64, 128, 256, 512, 1024) 
group by bannerid  
having count(bannersize) = 7 ;
于 2012-10-18T16:22:54.157 に答える
1
   SELECT bannerid
     FROM tbl
 GROUP BY bannerid
   HAVING COUNT(bannersize) = (SELECT COUNT(DISTINCT bannersize) FROM tbl)

これは、テーブルに何が存在するかに関係なくbannerid、完全なセットが必要な場合に機能します。bannersizes

于 2012-10-18T16:23:47.377 に答える
0
select bannerid
from t
group by bannerid
where count(distinct bannersize) = 7
于 2012-10-18T16:20:59.397 に答える