MySQL将日期与可能返回null的子查询的最大值进行比较

时间:2016-03-04 14:34:27

标签: mysql null comparison where-clause

我有一个WHERE CLAUSE,如下所示:

t.triggered > (SELECT MAX(time_flag) FROM triggers)

当子查询返回一个值时,因为有一个值正常执行整个查询。

当子查询没有返回值时,比较始终为false,即使所有内容都大于' NULL'也不会返回任何记录。

我读到了' NULL'不适合进行比较,那么如何编写查询以克服这个问题呢?

2 个答案:

答案 0 :(得分:2)

类似的东西:

<img src=xyz>

包含t.triggered > COALESCE((SELECT MAX(time_flag) FROM triggers), '1900-01-01') 值的谓词,不会评估为NULLtrue:它的计算结果为false。使用COALESCE,如果子查询返回NULL,则可以与非常旧的值进行比较,从而返回表中的所有内容。

答案 1 :(得分:1)

使用IFNULL或COALESCE函数在子查询中将NULL值替换为默认值(某个最小日期):

触发&gt; (SELECT IFNULL(MAX(time_flag),'1000-01-01')FROM触发器)