Mysql 何处不是SQL指令
我有这样的例子:选择这个颜色的块不是一个轮子和质量>=10 我有四个想法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!=用于反向测
从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