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 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 回答
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 回答
1

Yes, once you get the query numbers into a table variable (say it's called @QNums, with one column named QNum)) try

 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 回答