仅在不为空时比较字段
Posted
技术标签:
【中文标题】仅在不为空时比较字段【英文标题】:Comparing fields only when NOT null 【发布时间】:2015-01-13 12:41:21 【问题描述】:我有一个这样的查询。
SELECT T1.timestamp, T2.timestamp FROM (SELECT …) AS T1 LEFT OUTER JOIN (SELECT ….) AS T2 ON T1.id = T2.id WHERE T1.timestamp < T2.timestamp
我面临的问题是条件WHERE T1.timestamp < T2.timestamp
将过滤掉 T1.timestamp
在我的用例中,我不希望查询过滤掉 T2.timestamp 为空的行。 T1.timestamp < T2.timestamp
应该只在定义了两个时间戳的情况下进行比较,并且应该返回 T2.timestamp 为空的行。
有没有办法做到这一点?
【问题讨论】:
WHERE T1.timestamp < T2.timestamp OR T2.timestamp IS NULL
不适合你吗?
我试过了,效果很好。非常感谢!!!
WHERE T1.timestamp
【参考方案1】:
复制 N.N.在这里回答,这样问题就不会显示为 0 个答案:
WHERE T1.timestamp<= ifnull(T2.timestamp,T1.timestamp)
而 Pentium10 回答:
WHERE T1.timestamp < T2.timestamp OR T2.timestamp IS NULL
(如果 N.N. 或 Pentium10 将他们的 cmets 移至答案,我将删除此答案)
【讨论】:
以上是关于仅在不为空时比较字段的主要内容,如果未能解决你的问题,请参考以下文章