如何编写SQL查询以获取必须具有某些特定值组合的行

时间:2012-09-22 07:40:10

标签: sql sqlite

我有一张这样的桌子。

Image_ID    Person_Ref  FileName    Effect_Ref
1            1           EU000101.jpg            1
2            1           EU000106.jpg            6
3            2           EU000201.jpg            1
4            2           EU000202.jpg            2
5            2           EU000203.jpg            3
6            3           EU000301.jpg            1
7            3           EU000306.jpg            6
8            4           EU000401.jpg            1
9            5           EU000501.jpg            1
10           5           EU000504.jpg            4
11           5           EU000505.jpg            5
12           6           EU000601.jpg            1
13           6           EU000604.jpg            4
14           6           EU000605.jpg            5
15           7           EU000701.jpg            1
16           7           EU000704.jpg            4
17           7           EU000705.jpg            5
18           8           EU000801.jpg            1
19           8           EU000806.jpg            6

现在我想得到所有那些必须有Effect_Ref的Person_Ref,比方说1,2,3

我试过这样的事情,但我知道这不是我想要的事情

select distinct * from Images where Effect_ref IN (1,2,3) order by Effect_ref 

1 个答案:

答案 0 :(得分:1)

您需要计算与您的条件匹配的记录实例(等于IN 中提供的参数的数量)。试试这个,

SELECT Person_REF
FROM tableName
WHERE Effect_REF IN (1,2,3)
GROUP BY Person_REF
HAVING COUNT(*) = 3

SQLFiddle Demo

相关问题