我到处研究过但似乎无法解决一个简单的错误: 运行Microsoft SQL Server:
UPDATE copyprogmaster
SET active =
CASE
WHEN active = 1 THEN active = 0
WHEN active = 0 THEN active = 1
ELSE active
END
WHERE source = 'Mass_Mail'
我的错误是:
第4行:'='附近的语法不正确。
答案 0 :(得分:10)
删除=
之后的THEN
,以便:
UPDATE copyprogmaster
SET active =
CASE
WHEN active = 1 THEN 0
WHEN active = 0 THEN 1
ELSE active
END
WHERE source = 'Mass_Mail'
在第二行active =
之后您已经有SET
。
答案 1 :(得分:4)
在那之后你不需要重复“active =”
UPDATE copyprogmaster
SET active =
CASE
WHEN active = 1 THEN 0
WHEN active = 0 THEN 1
ELSE active
END
WHERE source = 'Mass_Mail'
以下是http://msdn.microsoft.com/en-us/library/ms181765.aspx
文档中的示例USE AdventureWorks2008R2;
GO
SELECT ProductNumber, Category =
CASE ProductLine
WHEN 'R' THEN 'Road'
WHEN 'M' THEN 'Mountain'
WHEN 'T' THEN 'Touring'
WHEN 'S' THEN 'Other sale items'
ELSE 'Not for sale'
END,
Name
FROM Production.Product
ORDER BY ProductNumber;
GO
答案 2 :(得分:1)
根据您的查询,我认为active
字段为bit
或int
(假设int
字段仅包含值 0 , 1 ,或 NULL )。在这种情况下,我相信您可以按如下方式编写查询:
UPDATE dbo.copyprogmaster
SET active = active ^ 1
WHERE source = 'Mass_Mail'
请注意,该查询可以处理NULL
值,还可以处理 1 ,# 4 和# 6 行截图不变。屏幕截图# 1 显示表格结构,屏幕截图# 2 显示上述查询的示例执行。
希望有所帮助。
屏幕截图#1:
屏幕截图#2: