我想在SQL中过滤掉一些行。这是我的桌子。
ID | year
1 2002
1 2003
2 2003
2 2004
3 2002
我想过滤年份列中有2003年的ID。 这意味着在这种情况下,将没有ID在年份列中获得2003年。 我应该使用什么SQL代码?
答案 0 :(得分:1)
在这里查看http://www.sqlfiddle.com/#!2/bd0d6/3
select id
from dateyear
where year<> 2003
group by id
答案 1 :(得分:1)
你的问题有点含糊不清。一种解释是获取不包含2003年的ID列表:
select id
from t
group by id
having sum(year = 2003) = 0
答案 2 :(得分:0)
如果要列出年度列中没有2003的所有ID,那么year != 2003
就像其他用户建议的那样,是不够的,因为这会返回id = 2
它也包含2004
。
一个好的方法是列出获取所有ID并从中删除那些包含2003
的ID。你可以这样做:
SELECT DISTINCT id FROM t
WHERE id NOT IN (
SELECT id FROM t
WHERE YEAR = 2003
)
这将仅输出 id = 3
。
小提琴here。