1

如果我有一个类似于以下的表:

MyIds MyValues
----- --------
  1    Meat
  1    Fruit
  1    Veggies
  2    Fruit
  2    Meat
  3    Meat

如何创建一个查询,以便如果给定一个 distinct 的任意列表MyValues,它将给我所有MyIds匹配all of 的MyValues.

示例:如果MyValues包含 [Meat, Fruit, Veggies] 的列表,我想返回MyIds1因为1MyValues 中的每个值在表中都有一个条目。

我知道如果给我一个特定的MyValues. 但我不知道如何用任意数量的MyValues

4

2 回答 2

3

MyID您需要计算每个满足条件并且与IN子句中提供的值的数量相匹配的实例的总数。

SELECT MyID
FROM tableName
WHERE MyValues IN ('Meat', 'Fruit', 'Veggies')
GROUP BY MyID
HAVING COUNT(DISTINCT myVAlues) = 3

SQLFiddle 演示

于 2012-10-24T00:46:07.603 回答
0

一个大问题是列表是如何表示的。下面给出了一种方法,以表格形式表示列表:

with l as ( 
    select 'Meat' as el union all
    select 'Fruit' union all
    select 'Veggies'
)
select MyId
from t join
     l
     on t.MyValues = l.el
group by MyId
having count(distinct t.myvalues) = (select count(*) from l)
于 2012-10-24T00:50:16.600 回答