关于...
之间的区别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'}将 从第二个查询返回
。是吗?
答案 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