SQL查询中NOT(x> y)和(x <y)之间有什么区别?

4 sql

以下查询之间有什么区别:

SELECT * FROM employee  WHERE NOT(start_date > '01-JAN-1970');
Run Code Online (Sandbox Code Playgroud)

而这个查询:

SELECT * FROM employee  WHERE start_date < '01-JAN-1970';
Run Code Online (Sandbox Code Playgroud)

有什么区别,如果有的话,如何NOT(x > y)使用不同(x < y).谁能提供一个例子?

谢谢.

Qua*_*noi 8

MySQLPostgreSQL

SELECT * FROM employee WHERE not(start_date > '01-JAN-1970')
Run Code Online (Sandbox Code Playgroud)

不会使用INDEXon,start_date如果有的话,他们的优化器不够聪明.

否则,如果你纠正其条件不符合的情况下(任exaсtly一个不严格not(start_date >= '01-JAN-1970')start_date <= '01-JAN-1970'),查询是相等的.


Ton*_*ews 5

非等价的

SELECT * FROM employee WHERE not(start_date > '01-JAN-1970');
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM employee WHERE start_date <= '01-JAN-1970';
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM employee WHERE start_date < '01-JAN-1970';
Run Code Online (Sandbox Code Playgroud)

因为那会错过start_date = '01 -JAN-1970'的情况