过滤掉一些行

时间:2013-11-30 17:05:07

标签: mysql sql filtering

我想在SQL中过滤掉一些行。这是我的桌子。

ID | year
1 2002
1 2003
2 2003
2 2004
3 2002

我想过滤年份列中有2003年的ID。 这意味着在这种情况下,将没有ID在年份列中获得2003年。 我应该使用什么SQL代码?

3 个答案:

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