我有一个标志为0和1的表。
请告诉我如何将Zero更新为One,将其更新为零
DECLARE @a INT, @b INT
SELECT @a = number
FROM zerone
WHERE number = 0
SELECT @b = number
FROM zerone
WHERE number = 1
BEGIN
IF @a = 0
UPDATE zerone
SET number = 1
WHERE @a = 0
ELSE IF @b = 1
UPDATE zerone
SET number = 0
WHERE @b = 1
END
此查询对我不起作用。
答案 0 :(得分:2)
使用以下查询将0
更新为1
,将1
更新为0
update zerone set number= 1-number
答案 1 :(得分:1)
就是这样:
UPDATE zerone
SET number = CASE WHEN number = 1 THEN 0 ELSE 1 END;
答案 2 :(得分:0)
您还应始终考虑更新操作中的NULL值,并且必须明确过滤掉它们
UPDATE zerone
SET number= case
when 1 then 0
when 0 then 1
end
WHERE number in (0,1)
此外,您的查询将无效,因为您在select语句中为一行数据分配了一行数据。
SELECT @a = number
FROM zerone
WHERE number = 0
这不像您期望的那样工作,并且只会为@a赋值为NULL(如果没有行)或者如果有行则为0。如果有多行,那么它将具有单个值0
答案 3 :(得分:0)
正如您所看到的,有很多方法可以执行该任务,但在这种情况下,我更希望@Abdul Rasheed
。
我们还可以使用IIF
中的SQLSERVER2012 or above
逻辑函数。
UPDATE zerone
SET number = IIF (number = 1, 0, 1)