我有这样的例子:选择这些不是轮子和质量的部件的颜色> = 10 我有四个想法
select color from A where not(name='wheel') and mass>=10
select color from A where mass>=10 and not(name='wheel')
select color from A where not name='wheel' and mass>=10
select color from A where (not name='wheel') and mass>=10
哪一个是正确的?我认为第一个肯定是好的,但剩下的呢?
答案 0 :(得分:1)
我通常只使用not for keyword(exists,in,like)并保持<>或!=用于倒置测试。不确定它是一个约定,但我几乎每次都看到这种查询:
select color from A where name != 'wheel' and mass >= 10
这里有一个很好的语法参考:http://www.sqlstyle.guide/,没有关于NOT关键字的良好用法。
但您可以将您的4个查询视为"更正"。
括号在这里有一个数学行为,在你的每个例子中有或没有相同的结果,因为其中只有一个元素。
答案 1 :(得分:0)
清晰使用此
select color from A where name <> 'wheel' and mass >= 10
答案 2 :(得分:0)
由于您只有一个表格,因此最好使用<>
或!=
答案 3 :(得分:0)
也可以将我的2个笔杆放在上面:
在任何RDBMS中,NOT
和<>
运算符通常会导致查询中最耗费的任务。如果可能的话,避免它们总是好的。有时它是不可能的,但有时它是。
以您的查询为例:如果表name
上的A
基数非常低,即您只能设计一些不同的names
,那么&# 39;最好将它们全部列为“轮子”,从而避免NOT
和<>
select color
from A
where name IN ('something','somethingelse','anotherthing')
and mass >= 10