我對數據庫的東西還是一個新東西,這一個給我一個問題。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