Mysql 正在添加列名称!=3返回的结果要少得多
我有一个数据库查询:Mysql 正在添加列名称!=3返回的结果要少得多,mysql,sql,database,Mysql,Sql,Database,我有一个数据库查询: select scheduled_hike_id , hike_date , hike_title , hike_group_id , hike_privacy , hike_description , DAYOFMONTH(hike_date) , DAYNAME(hike_date) ,
select scheduled_hike_id
, hike_date
, hike_title
, hike_group_id
, hike_privacy
, hike_description
, DAYOFMONTH(hike_date)
, DAYNAME(hike_date)
, YEAR(hike_date)
, MONTH(hike_date)
from scheduled_hikes
where is_cancelled is null
and hike_date > DATE_ADD(NOW(), INTERVAL -1 DAY)
and show_on_home_page = 1
order by hike_date limit 4
它返回了我所期望的。当我添加一个子句“and hike_privacy!=3”时,它返回的结果要少得多
列中的其他值为NULL、1、2
知道为什么吗!=3没有像我预期的那样工作吗?另外,尝试
和(hike\u privacy为NULL或hike\u privacy!=3)
尝试和(hike\u privacy为NULL或hike\u privacy!=3)
如果hike\u privacy为NULL
,则不匹配hike\u privacy!=3
尝试:和(hike\u privacy!=3或hike\u privacy为空)
空值从不匹配非“空样式”比较
注意:确保在“或”术语周围使用括号!在SQL中,或优先,因此如果没有括号,它将被解析,就像它是这样编码的(注意括号的位置):
这与我们想要的完全不同,即:
where is_cancelled is null
and hike_date > DATE_ADD(NOW(), INTERVAL -1 DAY)
and show_on_home_page = 1
and (
hike_privacy != 3
or hike_privacy is null
)
如果hike_privacy为
null
,则它与hike_privacy!=3
尝试:和(hike\u privacy!=3或hike\u privacy为空)
空值从不匹配非“空样式”比较
注意:确保在“或”术语周围使用括号!在SQL中,或优先,因此如果没有括号,它将被解析,就像它是这样编码的(注意括号的位置):
这与我们想要的完全不同,即:
where is_cancelled is null
and hike_date > DATE_ADD(NOW(), INTERVAL -1 DAY)
and show_on_home_page = 1
and (
hike_privacy != 3
or hike_privacy is null
)
不知道为什么有人否决了这个,ic3b3rg是正确的。Null不小于或大于任何数字或不等于-表示没有valueWARNING!“OR”在SQL中优先,因此“OR hike_privacy!=3”将作为匹配项独立存在-即它将是(除“hike_privacy!=3”之外的整个where子句)或(hike_privacy!=3)@Erik I否决了它-阅读我的评论。这基本上是“错误的”@波希米亚人我想那是你的否决票吧。。。我意识到我的错误,当我张贴和编辑相应。。。快得要命!不幸的是,我不能取消我的反对票,因为时间太长了。(如果你编辑它,我可以认为-我会在几分钟后检查)不知道为什么有人否决了这个,ic3b3rg是正确的。Null不小于或大于任何数字或不等于-表示没有valueWARNING!“OR”在SQL中优先,因此“OR hike_privacy!=3”将作为匹配项独立存在-即它将是(除“hike_privacy!=3”之外的整个where子句)或(hike_privacy!=3)@Erik I否决了它-阅读我的评论。这基本上是“错误的”@波希米亚人我想那是你的否决票吧。。。我意识到我的错误,当我张贴和编辑相应。。。快得要命!不幸的是,我不能取消我的反对票,因为时间太长了。(如果你编辑它,我可以-几分钟后我会检查它)你的查询中有
限制4
。您希望返回多少条记录?您的查询中有限制4
。你期望得到多少记录?