在SQL中,是否存在非聚合最小/最大运算符

时间:2011-09-30 16:39:22

标签: sql sql-server

是否有像

这样的东西
select max(val,0)
from table

我不想找到整个表的最大值

必须有一种比这更简单的方法吗?

select case when val > 0 then val else 0 end
from table

编辑:我正在使用Microsoft SQL Server

4 个答案:

答案 0 :(得分:10)

函数GREATESTLEAST不是SQL标准,而是存在于许多RDBMS中(例如,Postgresql)。所以

SELECT GREATEST(val, 0) FROM mytable;

答案 1 :(得分:1)

不在SQL 本身。但是许多数据库引擎定义了一组可以在SQL语句中使用的函数。不幸的是,他们通常使用不同的名称和参数列表。

在MySQL中,该功能非常棒。在SQLite中,它是MAX(它对一个或多个参数的工作方式不同)。

答案 2 :(得分:0)

将它设为基于JOIN的设置?

SELECT
   max(val)
FROM
(
select val
from table
UNION ALL
select 0
) foo

这避免了另一个问题中建议的标量udf,它可能更适合

答案 3 :(得分:-3)

SQL中的内容甚至不是有效的SQL。这不是MAX在SQL中的工作方式。在T-SQL中,MAX在返回最大值的范围内聚合。你想要的只是两个人的更大价值。

阅读本文以获取更多信息:

Is there a Max function in SQL Server that takes two values like Math.Max in .NET?