2013-11-30 3 views
-2

Я хотел бы отфильтровать некоторые строки в SQL. Это мой стол.Фильтрация некоторых строк

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

Я хотел бы отфильтровать идентификаторы, у которых есть столбец 2003 года. Это означает, что в этом случае не будет идентификаторов, которые получили 2003 год в столбце года. Что такое код SQL, который я должен использовать?

+1

Вы пробовали что-нибудь? может быть, что-то вроде '' year! = 2003''? – nrathaus

ответ

0

Если вы хотите перечислить все идентификаторы, которые не имеют 2003 в год колонке затем year != 2003, как это было предложено другими пользователями, не будет достаточно, потому что который вернет id = 2, так как он содержит 2004 тоже.

Хороший подход состоит в том, чтобы перечислить все идентификаторы и удалить из них те, которые содержат 2003 в году. Вы можете сделать это следующим образом:

SELECT DISTINCT id FROM t 
WHERE id NOT IN (
    SELECT id FROM t 
    WHERE YEAR = 2003 
) 

Это будет выход толькоid = 3.

Fiddle here.

+1

Приятное чтение ума :) – nrathaus

1

Ваш вопрос немного неоднозначен. Одна интерпретация заключается в получении списка идентификаторов, которые не содержат 2003 год:

select id 
from t 
group by id 
having sum(year = 2003) = 0 
+0

Вы пробовали запрос? он, похоже, не работает: http://www.sqlfiddle.com/#!2/959ac7/1 с вашим запросом – nrathaus

+0

Nevermind, моя ошибка – nrathaus

Смежные вопросы