我有一个包含三个整数列的表:
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 解决。
那应该是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)