“<> ANY(…)”和“NOT = ANY(…)”之间的区别?

The*_*kit 5 sql-standard operator

你能解释一下这两个运算符之间的区别吗?

sID != smth 而不是 sID = smth。

乍一看,它们似乎完全相同。但它们给出了不同的结果。

例子

ype*_*eᵀᴹ 10

NOT sid = ANY (SELECT ...) 
Run Code Online (Sandbox Code Playgroud)

相当于:

sid <> ALL (SELECT ...)  
Run Code Online (Sandbox Code Playgroud)

所以,你的两个条件不一样。


ALLANY操作符对我(和很多人)来说很难使用。我认为这是有多少喜欢使用INNOT INEXISTSNOT EXISTS这导致更多的不言自明的代码。

如果您确实想使用它们,请认为这sid = ANY (SELECT ...)意味着“检查是否sid等于任何(某些)(select...)值”。

然后NOT sid = ANY (SELECT ...)是相反的。但是“等于其中任何一个”的反义词是“与所有这些不同”(而不是“与其中一些不同”)。