查询以更新SQL中的表中的数据

时间:2016-08-11 05:40:15

标签: sql sql-server sql-server-2008

我有一个包含以下数据的查找表:

AlcoholStatus

Id  Name
0   None
1   Not Drunk
2   Drunk Less
3   Drunk Medium
4   Heavy Drinker

另一个表引用此表数据(ID),因此它在另一个表中充当外键。

现在我想将此表更新为仅包含数据更新和删除两行。它给了我外键约束。我做了我想要的但有没有简单的方法来实现这一目标?我还想将另一个表更新为适当的值,如下所示:

AlcoholStatus

Id  Name
0   None
1   Yes
2   No

这里,Yes表示初始数据中的3,4,No表示1,2。

请帮助我如何删除这两行并更新上述数据,并将其他表更新为1 (For 3,4) and 2 for (1,2)

1 个答案:

答案 0 :(得分:2)

对于 SQL Server

首先是具有外键的更新表(我称之为Alcoholics):

UPDATE Alcoholics
SET StatusId = CASE WHEN StatusId IN (1,2) THEN 2 
                    WHEN StatusID IN (3,4) THEN 1
                    ELSE 0 END

然后更新AlcoholStatus

UPDATE AlcoholStatus
SET Name = CASE WHEN id = 1 THEN 'Yes' 
                WHEN id = 2 THEN 'No' 
                ELSE Name END
WHERE Id IN (1,2)

然后使用id in (3,4)

删除状态
DELETE FROM AlcoholStatus
WHERE id in (3,4)