2014-01-16 2 views
0

В этом примере, как отфильтровать 10-летних самцов? Я не хочу отфильтровывать всех мужчин и всех 10-летних. Также я не хочу указывать список атрибутов, для которых я хочу фильтровать, только атрибуты, которые я хочу отфильтровать!Как отфильтровать несколько значений определенного набора

Выборочные данные и таблицы:

sqlite> create table person (age int, gender char(1), name varchar(10)); 
sqlite> insert into person values (10,'f','Anoushka'); 
sqlite> insert into person values (10,'m','James'); 
sqlite> insert into person values (30,'f','Mei'); 
sqlite> insert into person values (30,'m','Ahmed'); 

Я использовал этот выбор, который возвращает данные, которые я хочу, но есть лучший способ?

sqlite> select * 
    ...> from person 
    ...> where age || gender != '10m'; 
10|f|Anoushka 
30|f|Mei 
30|m|Ahmed 

ответ

1
select * 
from person 
where age != '10' 
or gender != 'm'; 
+0

Это было быстро. Я отмечу как ответ за 11 минут. лол – Jess

0

Я нашел другой способ. Вам просто нужно нам or логика, которую я редко использую, но это пригодится.

sqlite> select * 
    ...> from person 
    ...> where (age != 10 or gender != 'm'); 
10|f|Anoushka 
30|f|Mei 
30|m|Ahmed 

Другой способ исключить 10-летних мужчин это просто not, что фильтр. Этот вариант легче читать для меня.

sqlite> select * 
    ...> from person 
    ...> where not (age = 10 and gender = 'm'); 
10|f|Anoushka 
30|f|Mei 
30|m|Ahmed 

Смотрите также De Morgan's Laws: "не (A и B)" такой же, как "(не) или (не B)"

+0

ну это точно такой же ответ, как отправленный StevieG выше – kmera

+0

Yup. Мы отправили в почти то же самое время. Я хотел нажать ** «ответить на свой вопрос» **, но я поспешил и нажал неправильную кнопку. – Jess

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