我无法将以下人类语言转换为MySQL查询:

Select all rows except those with ColA equals '1' OR ColB equals '1'.


我试过了:

SELECT * FROM table WHERE ColA = '1' OR ColB = '1';


上面的代码将提取与上面的where子句匹配的记录(ColA ='1'或ColB ='1'),但是如何获得与之相反的结果?我希望我能正确地描述它。请让我知道是否令人困惑。

最佳答案

select
    *
from
    `myTable`
where
    `colA` <> 1 and
    `ColB` <> 1


仅当colAcolBNOT NULL时,这才对您有用。如果存在带有colA = NULLcolB = NULL的行,则必须更改请求中的条件。

select
    *
from
    `myTable`
where
    (`colA` <> 1 or `colA` is null) and
    (`colB` <> 1 or `colB` is null)


当然,这取决于您是否想要具有NULL值的行,但是许多人对此遗忘了。

这是SQL Fiddle示例http://www.sqlfiddle.com/#!2/ea797/2

关于mysql - 选择除A或B以外的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21321404/

10-10 12:31