max(max(col1), max(col2), ...) 不起作用

gue*_*tli 1 postgresql max

我有一个包含三个整数列的表:

select max(col1), max(col2), max(col3) from mytable
Run Code Online (Sandbox Code Playgroud)

我想要三列的最大值。但这不起作用:

select max(max(col1), max(col2), max(col3)) from mytable
Run Code Online (Sandbox Code Playgroud)

如何完成这项工作?

我使用 PostgreSQL,但我希望这可以用标准 SQL 解决。

ype*_*eᵀᴹ 6

那应该是GREATEST(),不是MAX()MAX()用于聚合行中的值,GREATEST()用于聚合值列表(来自列、表达式)。

您可以找到 3 个最大值,每列一个,然后是三个最大值中的最大值:

select greatest(max(col1), max(col2), max(col3)) 
from mytable ;
Run Code Online (Sandbox Code Playgroud)

或在每一行中找到最大值,然后在所有行中找到最大值:

select max(greatest(col1, col2, col3)) 
from mytable ;
Run Code Online (Sandbox Code Playgroud)