了解Postgres查询

时间:2012-12-19 17:11:34

标签: postgresql

关于...

之间的区别
select * from table_a where id != 30 and name != 'Kevin';

select * from table_a where id != 30 or name != 'Kevin';

首先是"select all rows from table_a where the id is not 30 and the name is not Kevin"

因此,第一个查询将返回{30,' Bill'}的{Id,Name}行。

但是,第二个意思是"select all rows from table_a where the id is not 30 or the name is not 'Kevin'"

因此,上述{30,' Bill'}将 从第二个查询返回

是吗?

4 个答案:

答案 0 :(得分:2)

select * from table_a where id != 30 and name != 'Kevin';
  

因此{Id,Name}行{30,'Bill'}将首先返回   查询。

不,它不会。

select * from table_a where id != 30 or name != 'Kevin';
  

所以上面的{30,'Bill'}将从这一秒返回   查询。

不,它会的。你有倒退的逻辑。试试吧。

答案 1 :(得分:0)

不。第二个查询意味着“选择id不是30但名称不是'Kevin'的所有行,因此'Bill'的名称限定了记录包含在查询中。

答案 2 :(得分:0)

回顾:

A   B   not(A)  not(B)      AND     OR
1   1   0         0         0       0
1   0   0         1         0       1
0   1   1         0         0       1
0   0   1         1         1       1

因此,只有在以下情况下,两个查询才会返回相同的行:

1- id = 30 and name ='Kevin'

2- id!= 30 and name!='Kevin'

答案 3 :(得分:0)

快速逻辑表达式转换提示:

NOT(A和B)==不是A或不是B

NOT(A或B)==不是A而不是B