Php 如果三个字段均为“是”,则SQL隐藏结果
我有一个MySQL数据库,有4个字段:Php 如果三个字段均为“是”,则SQL隐藏结果,php,mysql,Php,Mysql,我有一个MySQL数据库,有4个字段: id | planchanged | dataremoved | rolloverenabled | 1 | Yes | Yes | Yes | 2 | NULL | | | 3 | | Yes | | 4 | Yes |
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的新东西