以下查询之间有什么区别:
SELECT * FROM employee WHERE NOT(start_date > '01-JAN-1970');
而这个查询:
SELECT * FROM employee WHERE start_date < '01-JAN-1970';
有什么区别,如果有的话,如何NOT(x > y)
使用不同(x < y)
.谁能提供一个例子?
谢谢.
在MySQL
和PostgreSQL
SELECT * FROM employee WHERE not(start_date > '01-JAN-1970')
不会使用INDEX
on,start_date
如果有的话,他们的优化器不够聪明.
否则,如果你纠正其条件不符合的情况下(任exaсtly一个不严格not(start_date >= '01-JAN-1970')
或start_date <= '01-JAN-1970'
),查询是相等的.
非等价的
SELECT * FROM employee WHERE not(start_date > '01-JAN-1970');
是
SELECT * FROM employee WHERE start_date <= '01-JAN-1970';
不
SELECT * FROM employee WHERE start_date < '01-JAN-1970';
因为那会错过start_date = '01 -JAN-1970'的情况