查询在一行中搜索最大值,而不是在列中搜索 - SQL/MySQL

Lin*_*nay 0 mysql sql max

好的,我在桌子上有一排.此行有八个日期类型字段.

我正在尝试编写一个返回行中最高日期值的查询.

例如:

    NULL,NULL,2009-10-09,2010-03-12,2010-04-15,2010-06-23,2010-08-27,NULL
Run Code Online (Sandbox Code Playgroud)

针对上表运行时的查询将返回此行的以下值:2010-08-27

我尝试了几种使用CASE的组合,但它似乎不够优雅和冗长(因此我还没有完成编写查询).

我还有其他选择吗?或者有人有一个他们已成功运行的解决方案?

感谢任何可以提供的帮助.:)

OMG*_*ies 5

你想要GREATEST功能:

SELECT GREATEST(col1, col2, col3, col4, col5, col6, col7, col8) AS max_date
  FROM YOUR_TABLE
Run Code Online (Sandbox Code Playgroud)

注意数据类型 - 不想比较应该是DATE/etc的字符串.

可惜SQL Server没有它,但幸运的是Oracle和PostgreSQL都有.