Php 如果三个字段均为“是”,则SQL隐藏结果

Php 如果三个字段均为“是”,则SQL隐藏结果,php,mysql,Php,Mysql,我有一个MySQL数据库,有4个字段: id | planchanged | dataremoved | rolloverenabled | 1 | Yes | Yes | Yes | 2 | NULL | | | 3 | | Yes | | 4 | Yes |

我有一个MySQL数据库,有4个字段:

id | planchanged | dataremoved | rolloverenabled |
1  | Yes         | Yes         | Yes             |
2  | NULL        |             |                 |
3  |             | Yes         |                 |
4  | Yes         |             | Yes             |
5  |             |             | NULL            |

如何查询此数据库以仅显示在这三个字段上没有全部“是”的记录。还请考虑到某些thos字段可能为空。因此,基于该示例,我的结果应该显示记录2、3、4和5。

您可以这样做

SELECT * 
FROM  yourTableName 
WHERE planchanged IS NULL 
  OR  dataremoved IS NULL 
  OR  rolloverenabled IS NULL 
  OR  planchanged <> 'Yes' 
  OR  dataremoved <> 'Yes' 
  OR  rolloverenabled <> 'Yes'
SELECT * FROM TableName 
WHERE coalesce(planchanged,'-') <> 'Yes' OR 
coalesce(dataremoved,'-') <> 'Yes' OR
coalesce(rolloverenabled,'-') <>'Yes'
SQL

您可以这样做

SELECT * FROM TableName 
WHERE coalesce(planchanged,'-') <> 'Yes' OR 
coalesce(dataremoved,'-') <> 'Yes' OR
coalesce(rolloverenabled,'-') <>'Yes'
SQL



还请考虑到有些字段可能为空,看起来像工作描述。你试过自己解决你的任务吗?是的,我试过,但我只能在三个都为空且没有出现任何空记录时才能得到结果。不知道你所说的工作描述是什么意思。只是为了好玩-不需要考虑NULL行为的最简单的条件是:Not planchanged='Yes',dataremoved='Yes',rolloverenabled='Yes',请同时考虑到有些字段可能为NULL,看起来像是工作描述。你试过自己解决你的任务吗?是的,我试过,但我只能在三个都为空且没有出现任何空记录时才能得到结果。不知道你所说的工作描述是什么意思。只是为了好玩-不需要考虑空行为的最直接的条件是:Not planchanged='Yes',dataremoved='Yes',rolloverenabled='Yes'…只显示没有全部“Yes”的记录。。。那些是不是应该是和的?不,他们不应该。这个查询是正确的。请阅读问题。太好了,我在查询中添加了is null check。我不知道'yes'NULL是假的Yep,因为NULL不等于任何东西。看,有趣的是,它不等于任何东西,但它也不等于…只显示没有全部“是”的记录。。。那些是不是应该是和的?不,他们不应该。这个查询是正确的。请阅读问题。太好了,我在查询中添加了is null check。我不知道'yes'NULL是假的Yep,因为NULL不等于任何东西。看,有趣的是,它不等于任何东西,但也不等于任何东西。如果两列是肯定的,第三列不是肯定的,他想让它显示出来,只要替换并使用ORBe,注意在where子句中使用coalesce将停止对这些列使用任何索引columns@lc. 谢谢,我不知道。在这种情况下,你的答案应该适用于OP。我将保留我的答案。如果有两列是肯定的,而第三列不是肯定的,他希望它显示出来。只需替换并使用ORBe,注意在where子句中使用coalesce将停止对这些列使用任何索引columns@lc. 谢谢,我不知道。在这种情况下,你的答案应该适用于OP。我将保留我的答案。这些不是多余的:planchanged为NULL还是planchanged“Yes”@Boundless:NULL从不与任何内容匹配。所以NULL='Yes'==false,NULL'Yes'==false@Boundless不幸的是,不适用于mysql和大多数依赖于空匹配设置的其他数据库。谢谢你的回复和所有的评论我当然学到了一些关于nully的新东西这些不是多余的:planchanged是NULL或planchanged'Yes'@Boundless:NULL从不匹配任何东西。所以NULL='Yes'==false,NULL'Yes'==false@Boundless不幸的是,不适用于mysql和大多数依赖于空匹配设置的其他数据库。谢谢你的回复和所有评论,我确实学到了一些关于NULL的新东西