我想在表格中选择单元格值不是foo
的所有内容。我认为它类似于WHERE NOT NULL
,类似于SELECT * FROM database.table WHERE NOT 'foo';
,但只返回没有数据的列标题。
编辑:我想这样做,不用指定特定列(NOT 'foo'
用于所有字段。)
答案 0 :(得分:3)
如果没有指定字段和条件,就没有办法做到这一点,如
select * from table where
col1 != value and
col2 != value and
...
取决于您的意思
单元格的值不是foo
您可能需要将and
(一行中的所有列都不符合条件)更改为or
(至少有一列与条件不匹配)。
答案 1 :(得分:3)
当@Jim Garrison回答时,您必须指定列来比较您的'foo'值。否则你自己测试一个常量值,可以是假(零)或真(非零)。
SELECT * FROM database.table WHERE NOT 'foo'
不返回任何数据,因为'foo'
是非假常数值。因此,对于表中的每一行,NOT 'foo'
都为false,因此没有行匹配,结果为空集。
Jim提供了一种依次测试每个列的语法。这是另一种替代语法:
SELECT * FROM database.table WHERE 'foo' NOT IN (column1, column2, column3, ...)
但是,我同意@Mosty Mostacho的评论。在关系数据库中,测试多列上的单个值是很奇怪的。每列应该是不同的逻辑类型的属性,因此在许多列中寻找类似的值并不常见(不是不可能,但不常见)。
这通常意味着您正在使用重复列列,这违反了First Normal Form。相反,您可能需要创建子表,以便您搜索的所有值都在多个行的单个列中。
答案 2 :(得分:0)
似乎MySQL不够复杂,无法做到这一点。相反,我必须在我的php循环中添加一个if-test以检查foo
并在foo
出现时中断。我不想这样做,因为在测试单元格的值之前我必须进入几个嵌套循环...