1

必要なクエリのタイプを説明します。

次のようなテーブルがあるとします。

| ID | someID | Number |
|----|--------|--------|
| 1  | 1      | 10     |
| 2  | 1      | 11     |
| 3  | 1      | 14     |   
| 4  | 2      | 10     |  
| 5  | 2      | 13     | 

ここで、特定の番号を持つ someID を見つけたいと思います (たとえば、番号 10、11、14 のクエリは someID 1 を返し、番号 10、13 のクエリは 2 を返します)。ただし、someID にすべてのクエリ番号が含まれているだけでなく、さらに多くの番号が含まれている場合、クエリによって返されません。(たとえば、10、11 のクエリでは何も返されません)。
出来ますか?

4

3 に答える 3

2
select someID
from yourtable
where number in (10,11,14)
and not exists (select * from yourtable t2 where number not in(10,11,14) 
                 and t2.someid=yourtable.someid)
group by someID
having count(distinct ID) = 3

3照会しているアイテムの数はどこですか

于 2013-09-06T14:13:56.493 に答える
2
SELECT t1.someId
FROM yourTable t1
WHERE t1.number IN (10,14,11)
GROUP BY t1.someID
HAVING COUNT(DISTINCT t1.ID) = (SELECT COUNT(DISTINCT t2.ID) FROM yourTable t2 WHERE t1.someID=t2.someID)

フィドルの例

于 2013-09-06T14:18:57.703 に答える
1

はい、クエリ番号をテーブル変数に取得したら (たとえば@QNums、 という名前の 1 つの列でQNum)) 試してください

 Select distinct someId
 From table t
 Where exists (Select * from @QNums
               where QNum = t.Number)
   And not Exists (Select * From table t2
                   Where someId = t.someId
                      And not exists(Select * From @QNums
                                     where QNum = t3.Number))
于 2013-09-06T14:18:34.443 に答える