我想知道以下是否可以做到......
DECLARE @IsDefault bit
SELECT @IsDefault = IsDefault FROM <TABLE> WHERE <CONDITIONS>
UPDATE <TABLE>
SET IsDefault = max(IsDefault,@IsDefault) WHERE <CONDITIONS>
答案 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。