在此示例中,如何过滤掉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
答案 0 :(得分:1)
select *
from person
where age != '10'
or gender != 'm';
答案 1 :(得分: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:“not(A和B)”与“(不是A)或(不是B)”
相同