【发布时间】:2016-06-12 21:40:45
【问题描述】:
我有一个具有唯一标识符“名称”的表和两个都是布尔语句的字段。这两个字段的标题分别为“sentbirth”和“senthire”。
我正在尝试做的是查看该值对于 senthire 或 sentbirth 是否已经为真。如果是这样,我想保持真实。但如果它是 false,那么我希望它使用从我的 Web 应用程序生成的 @SentBirth 或 @SentHire 值进行更新。
到目前为止我所拥有的是:
SELECT [name],[sentbirth],[senthire]
FROM [CCRAuction].[dbo].[cardsUser]
WHERE name = @Name
IF [sentbirth] = '1'
BEGIN
UPDATE [CCRAuction].[dbo].[cardsUser]
SET [sentbirth] = '1'
END
ELSE
BEGIN
UPDATE [CCRAuction].[dbo].[cardsUser]
SET [sentbirth] = @SentBirth
END
IF [senthire] = '1'
BEGIN
UPDATE [CCRAuction].[dbo].[cardsUser]
SET [senthire] = '1'
END
ELSE
BEGIN
UPDATE [CCRAuction].[dbo].[cardsUser]
SET [senthire] = @SentHire
END
使用此代码,我收到错误消息,指出“sentbirth”和“senthire”是无效的列名。
如何在 Microsoft SQL Server Management Studio 中正确编写此代码?
这个问题的答案是:
UPDATE cu SET
[sentbirth] = CASE WHEN cu.[sentbirth] = '1' THEN cu.[sentbirth] ELSE @SentBirth END,
[senthire] = CASE WHEN cu.[senthire] = '1' THEN cu.[senthire] ELSE @SentHire END
FROM [CCRAuction].[dbo].[cardsUser] cu
WHERE cu.name = @name
【问题讨论】:
标签: sql sql-server if-statement select sql-update