Mysql 何处不是SQL指令

Mysql 何处不是SQL指令,mysql,sql,Mysql,Sql,我有这样的例子:选择这个颜色的块不是一个轮子和质量>=10 我有四个想法 从where not(name='wheel')和mass>=10中选择颜色 从质量>=10而不是(name='wheel')的位置选择颜色。 从非name='wheel'和mass>=10的位置选择颜色 从where(而不是name='wheel')和mass>=10的位置选择颜色 哪一个是正确的?我想第一个肯定没问题,但其余的呢?我通常只使用not作为关键字(exists、in、like)和keep or!=用于反向测

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

  • 从where not(name='wheel')和mass>=10中选择颜色
  • 从质量>=10而不是(name='wheel')的位置选择颜色。
  • 从非name='wheel'和mass>=10的位置选择颜色
  • 从where(而不是name='wheel')和mass>=10的位置选择颜色

  • 哪一个是正确的?我想第一个肯定没问题,但其余的呢?

    我通常只使用not作为关键字(exists、in、like)和keep or!=用于反向测试。不确定这是一种惯例,但我几乎每次都看到这种查询:

    select color from A where name != 'wheel' and mass >= 10
    
    这里有一个很好的语法参考:,与NOT关键字的良好使用无关

    <>但是你可以把你的4个查询看作是正确的。

    括号在这里有一个数学数学行为,在每个示例中都有或没有相同的结果,因为其中只有一个元素。

    为了清晰起见,请使用此选项

    select color from A where name <> 'wheel' and mass >= 10
    

    从名称“车轮”和质量>=10的位置选择颜色
    
    因为您只有一个表,所以最好使用
    =

    我想把我的2便士也放在这上面:

    在任何RDBMS中,
    NOT
    操作符通常会导致查询中最耗时的任务。在可能的情况下,避免它们总是好的。有时这是不可能的,但有时确实如此

    以您的查询为例:如果表
    A
    上的
    name
    的基数非常低,即您只能有几个不同的
    name
    ,这些名称都是经过设计固定的,最好将它们全部列出,但不列出“轮子”,从而避免
    NOT


    只需尝试四种不同的版本。不要忘记在表中有一些空值。(它们往往会让初学者感到困惑。)从“轮子”和质量>=10的名称中选择颜色;我知道和!=,但我必须用Not你知道,你可以试试吗?这是测试的基础。。。
    select color 
    from A 
    where name IN ('something','somethingelse','anotherthing') 
      and mass >= 10