什么不是SQL指令

时间:2016-04-27 07:42:34

标签: mysql sql

我有这样的例子:选择这些不是轮子和质量的部件的颜色> = 10 我有四个想法

  1. select color from A where not(name='wheel') and mass>=10
  2. select color from A where mass>=10 and not(name='wheel')
  3. select color from A where not name='wheel' and mass>=10
  4. select color from A where (not name='wheel') and mass>=10
  5. 哪一个是正确的?我认为第一个肯定是好的,但剩下的呢?

4 个答案:

答案 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