我有一张表格如下:
Codes
year | code |
----------------
2009 | 10001 |
2009 | 10002 |
2009 | 10003 |
2010 | 10001 |
2010 | 10002 |
2010 | 10004 |
2011 | 10001 |
2011 | 10005 |
2011 | 10010 |
如何查找多年来存在的所有代码。例如,如果我想查找2009年和2010年(而不一定是2011年)中存在的所有代码,我应该获得10001
和10002
,因为它们都出现在2009年和2010年。以下是不正确的但我想要类似的东西:
SELECT code FROM Codes
GROUP BY code
HAVING year in (2009,2010)
答案 0 :(得分:2)
实现这一目标的一种方法是使用INTERSECT
操作
select code from codes where year=2009
intersect
select code from codes where year=2010;
这会给你:
code
10001
10002
此方法存在的问题是您必须为每个过滤器添加intersect
。
答案 1 :(得分:2)
Select Code
From Codes
Where Year In (2009,2010,2011)
Group By Code
Having count(Distinct Year)=3
只应返回10001
答案 2 :(得分:2)
在您的示例中,您可以使用以下查询找到所需内容:
SELECT code
FROM codes
WHERE year IN (2009,2010)
GROUP BY code
HAVING count(*)=2;
说明:
count(*)
)。答案 3 :(得分:0)
你的溶胶: -
SELECT代码FROM代码 年份> = 2009年和< = 2011;