MySQL 将日期与可能 return 为空的子查询的最大值进行比较

MySQL comparison of date to the max of a subquery that might return null

我有一个如下所示的 WHERE 子句:

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

当子查询returns一个值因为有一个整个查询正常执行

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

我读到 'NULL' 不适合比较,那么如何编写查询才能克服这个问题?

类似于:

t.triggered > COALESCE((SELECT MAX(time_flag) FROM triggers), '1900-01-01')

包含 NULL 值的谓词不计算为 truefalse:它计算为 NULL。使用 COALESCE 您可以与一个非常旧的值进行比较,以防子查询 returns NULL 并且因此 return 来自您的 table.

的所有内容

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

t.triggered > (SELECT IFNULL(MAX(time_flag), '1000-01-01') FROM 触发器)