如何在SQL Server更新语句中使用MAX函数

时间:2014-03-17 15:10:35

标签: sql-server

我想知道以下是否可以做到......

DECLARE @IsDefault bit

SELECT @IsDefault = IsDefault FROM <TABLE> WHERE <CONDITIONS>

UPDATE <TABLE> 
SET IsDefault = max(IsDefault,@IsDefault) WHERE <CONDITIONS>

2 个答案:

答案 0 :(得分:1)

MAX() - 函数是一个聚合函数,因此你不能用它来比较两个值并只返回最大值。你必须做这样的事情:

UPDATE <TABLE>
SET IsDefault = CASE WHEN IsDefault > @IsDefault THEN IsDefault ELSE @IsDefault END
WHERE <CONDITIONS>

同样适用于MIN() - 函数。

答案 1 :(得分:0)

另一方面,如果你把这个值拉到变量中以使事情变得更清楚,并且实际上可以使用两组,这是解决我之前需要的这个问题的有趣方法。

SELECT [Other Fields], (SELECT Max(v) FROM (VALUES (date1), (date2), (date3),...) AS value(v)) as [MaxDate] FROM [YourTableName]

应该注意,这仅适用于sql server&gt; = 2008。

信用:https://stackoverflow.com/a/6871572/1316081