我对数据库的东西还是一个新东西,这一个给我一个问题。SQL更新到案例中的表
我正在正常化我的表格,并且我创建了一个新的[Status]现在是FK。
我是能够全部从原表中的值的插入新的,减去[状态]
我现在想插入使用的情况下选择[状态]。
尝试1:
USE [GESS]
GO
DECLARE @int_status int;
SELECT @int_status =
(CASE
WHEN [Status] = 'Alumni' THEN 5
WHEN [Status] = 'Faculty' THEN 6
WHEN [Status] = 'Friend' THEN 7
WHEN [Status] = 'Student' THEN 8
ELSE 9
END)
FROM [dbo].[GESSContact]
INSERT INTO dbo.GESSContact2 ([Status]) VALUES (@int_status)
GO
但它说,只有1行的影响。
尝试2:
USE [GESS]
GO
INSERT INTO [dbo].[GESSContact2]([Status])
Select (
CASE
WHEN o.[Status] = 'Alumni' THEN 5
WHEN o.[Status] = 'Faculty' THEN 6
WHEN o.[Status] = 'Friend' THEN 7
WHEN o.[Status] = 'Student' THEN 8
ELSE 9
END) As [Status]
From [dbo].[GESSContact] o
GO
这一个说,所有的行会受到影响,但[状态]仍设置为空当我检查。
感谢任何帮助/建议
UPDATE:
虽然人帮助我,我标记为答案的反应让我意识到我需要做的UPDATE
而不是INSERT
。这是我用来完成这项工作的SQL。
USE [GESS]
GO
UPDATE [dbo].[GESSContact2]
SET [dbo].[GESSContact2].[Status] =
CASE
WHEN o.[Status] = 'Alumni' THEN 5
WHEN o.[Status] = 'Faculty' THEN 6
WHEN o.[Status] = 'Friend' THEN 7
WHEN o.[Status] = 'Student' THEN 8
ELSE 9
END
FROM [dbo].[GESSContact2] JOIN [dbo].[GESSContact] o
ON [dbo].[GESSContact2].id = o.id
谢谢大家帮助!
在表dbo.GESSContact2([状态])有多少列那里?我可以得到表格定义吗?你是否有状态表中的5,6,7,8,9这样的数据,因为它被用作dbo.GESSContact2表的外键? – Rakib
我将表def添加到原始帖子。在状态表中,(5,6,7,8,9)是主键。在原始表中,它们是字符串值 – Christian4423
我需要此表[dbo]。[GESSContact2]定义。我只需要列数和列名称 – Rakib