SQLServer:在单个查询中,根据一个值是大于还是小于另一个值进行更新



我希望在一个基于日期的查询中更新SQL Server,但是更新的值取决于它是大于还是小于提供的值(在本场景中是日期(。

UPDATE table 
SET id = 'over'
WHERE date > '2022-01-01'
UPDATE table
SET id = 'under'
WHERE date < '2022-01-01'

我可以通过上述查询单独完成此操作。我的问题是,SQL Server中是否有一种方法可以将这两个查询组合起来,并在单个更新查询中运行此更新?

EDIT:显示SET值为字符串。

试试这样的

UPDATE table 
SET id = case 
when (date > '2022-01-01') then over
when (date < '2022-01-01') then under
end;

您可以使用CASE表达式来评估所有可能的条件,并为每个条件返回适当的值。请注意,如果省略CASEELSE部分,并且没有条件计算为TRUE,则结果为NULL

UPDATE [table]
SET [id] = CASE 
WHEN [date] > '20220101' THEN 'over'
WHEN [date] < '20220101' THEN 'under'
ELSE ''
END

相关内容

最新更新