我正在尝试在每个记录(MySQL)的三个不同字段中选择最大日期,因此,在每一行中,我都有date1,date2和date3:始终填充date1,date2和date3可以为NULL或为空GREATEST语句为简单明了,但对NULL字段没有影响,因此效果不佳:
SELECT id, GREATEST(date1, date2, date3) as datemax FROM mytable
我也尝试过更复杂的解决方案,例如:
SELECT
CASE
WHEN date1 >= date2 AND date1 >= date3 THEN date1
WHEN date2 >= date1 AND date2 >= date3 THEN date2
WHEN date3 >= date1 AND date3 >= date2 THEN date3
ELSE date1
END AS MostRecentDate
此处存在相同的问题:NULL值是返回正确记录时的重大问题
拜托,你有解决办法吗?提前致谢....
采用 COALESCE
SELECT id,
GREATEST(date1,
COALESCE(date2, 0),
COALESCE(date3, 0)) as datemax
FROM mytable
更新:以前使用的答案IFNULL
确实有效,但是正如Mike Chamberlain在评论中指出的那样,COALESCE
实际上是首选方法。
问题内容: 为什么第一个INSERT要通过table2。请注意,table2.col_1不为NULL。它不会为col_1插入NULL,而是神秘地将NULL值转换为空字符串。我正在使用MySQL 5.5.28版本。谢谢 问题答案: 您已关闭MySQL的STRICT模式。打开它,您将得到一个错误。 否则,您可以通过以下方式使用PDO测试这些警告:http : //php.net/manual/en/p
我有一个可选对象: 我想返回或如果为空返回。 我们是否有比遵循更复杂的方法来实现这一点?
问题内容: 我有一个问题,我需要使用LEAST和GREATEST函数联接两个表,但要使用JPA CriteriaQuery。这是我要复制的SQL … 我看过CriteriaBuilder.least(..)和great(..),但是在尝试理解如何创建传递给任何一个函数的过程中遇到了困难。 问题答案: 事实证明,CriteriaBuilder确实支持将LEAST和GREATEST作为非聚合函数来调用
问题内容: 我想获得最高值,但按同一表ex上的另一个字段分组: seqid + fileid +名称 结果必须是 seqid + fileid +名称 注意:所有字段都必须像使用select一样显示*我将不胜感激。tnx 问题答案: 怎么样
问题内容: 桌子: 我想获取UserId,每个UserId的max(Date)值。即,具有最新日期的每个UserId的值。有没有一种方法可以简单地在SQL中做到这一点?(最好是Oracle) 更新: 对于任何歧义,我们深表歉意:我需要获取所有UserIds。但是对于每个UserId,仅该用户具有最新日期的那一行。 问题答案: 这将检索其my_date列值等于该用户ID的my_date最大值的所有行
如何在MongoDB中获得字段中具有最小值或最大值的文档? 与MySQL中的MIN()或MAX()函数类似,但使用NodeJS MongoDB驱动程序。有什么想法吗?