mysql - 有没有办法在 MySQL 中检索数据类型的最小值?

标签 mysql sql

我正在尝试检索存储在一行中任意三列中的最新日期。

当所有三个日期都不是 NULL 时,此查询工作正常:

SELECT GREATEST(date_A, date_B, date_C) FROM mytable

但是当这些值中的任何一个为 NULL 时,GREATEST returns NULL .

解决这个问题的方法是使用:

SELECT GREATEST(
  COALESCE(date_A, '1000-01-01'),
  COALESCE(date_B, '1000-01-01'),
  COALESCE(date_C, '1000-01-01')
) FROM mytable

这是有效的,因为 '1000-01-01' is the minimum value of the DATE datatype .然而,为了便于阅读,我更愿意用 MIN_VALUE 函数或常量来表达查询。

MySQL中有这样的东西吗?

最佳答案

MySQL 中没有这样的函数或常量。最明显的是 MAXINT,但即使这样也不可用。

如果可能的话,我的建议是,如评论中所述,不允许列中有 NULL 值。而是对 0000-00-00 日期使用 MySQL 的零值,并且将按预期使用 GREATESTLEAST:

mysql> SELECT GREATEST ('2015-01-01', '2041-11-13', '1844-05-30', '0000-00-00');
+-------------------------------------------------------------------+
| GREATEST ('2015-01-01', '2041-11-13', '1844-05-30', '0000-00-00') |
+-------------------------------------------------------------------+
| 2041-11-13                                                        |
+-------------------------------------------------------------------+
1 row in set (0.00 sec)

mysql> SELECT LEAST ('2015-01-01', '2041-11-13', '1844-05-30', '0000-00-00');
+----------------------------------------------------------------+
| LEAST ('2015-01-01', '2041-11-13', '1844-05-30', '0000-00-00') |
+----------------------------------------------------------------+
| 0000-00-00                                                     |
+----------------------------------------------------------------+
1 row in set (0.00 sec)

关于mysql - 有没有办法在 MySQL 中检索数据类型的最小值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33863689/

相关文章:

php - 我想显示各个俱乐部的所有球员,但在 laravel 的表格中遇到一些问题

mysql - 为什么我不能用 'goapp deploy' 部署到 GAE,我找不到导入 : "github.com/go-sql-driver/mysql"

MySQL 数据源向导不适用于 Visual Studio 2017

mysql - 用于插入在 1 中大于最大值的值的 SQL 命令

sql - 在 SQL 中跟进购买查询

c# - 生成密码哈希

sql - Oracle 语法到 Postgres 帮助

mysql - 如何根据查询结果设置变量?

python - 使用 strptime (Python) 时出现错误消息

sql - 如何将 Oracle apex 项目限制为数字/字符值