You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL列比较时包含NULL值:如何用单条件实现?

解决MySQL中列比较时包含NULL行的问题

嘿,我懂你遇到的困扰了!在MySQL里,NULL是个特殊的值——它代表“未知”,所以当你用NEW_TIME > OLD_TIME这种条件做比较时,如果OLD_TIME是NULL,这个比较的结果既不是TRUE也不是FALSE,而是NULL。而WHERE子句只会保留结果为TRUE的行,所以那些OLD_TIME为NULL的行就被过滤掉了。

要同时获取这些NULL行,你可以试试下面两种实用方法:

方法一:直接添加NULL判断条件

把查询改成这样,明确把OLD_TIME为NULL的情况包含进来:

SELECT * FROM table 
WHERE (NEW_TIME > OLD_TIME) OR OLD_TIME IS NULL;

逻辑很直白:要么满足NEW_TIME大于OLD_TIME,要么OLD_TIME本身就是NULL,两种情况都会被选中。对应你给出的例子,那行OLD_TIME为NULL的数据就会被正常返回啦。

方法二:用IFNULL函数替换NULL值

如果你希望把NULL当成一个特定值来参与比较(比如一个极小的数),可以用IFNULL函数把OLD_TIME的NULL替换成一个肯定比NEW_TIME小的值,比如:

SELECT * FROM table 
WHERE NEW_TIME > IFNULL(OLD_TIME, 0);

这里IFNULL(OLD_TIME, 0)会把OLD_TIME的NULL替换成0,只要你的NEW_TIME值(比如你例子里的1522726409000)大于0,这行数据就会被选中。不过这个方法要结合你的实际业务场景来用,确保替换的值符合逻辑。

内容的提问来源于stack exchange,提问作者Arunkumar Muthuvel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:09:02