是否有像
这样的东西select max(val,0)
from table
我不想找到整个表的最大值
必须有一种比这更简单的方法吗?
select case when val > 0 then val else 0 end
from table
编辑:我正在使用Microsoft SQL Server
答案 0 :(得分:10)
函数GREATEST
和LEAST
不是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?