2016-04-23 39 views
1

我有兩個表:WordForm和WordDefinition:如何將數據從父項的一列移動到新的子表中?

CREATE TABLE [dbo].[WordForm] (
    [WordFormId] VARCHAR (20) NOT NULL, 
    [WordId]  VARCHAR (20) NOT NULL, 
    [Primary] BIT   DEFAULT ((0)) NOT NULL, 
    [PosId]  INT   NOT NULL, 
    -- I want to move text data from this column into 
    -- the WordDefinition table column called Definition 
    -- and then I will remove the column from here later. 
    [Definition] VARCHAR (MAX) NULL, 
    [Sample]  VARCHAR (MAX) NULL, 
    [Synonym] VARCHAR (100) NULL, 
    PRIMARY KEY CLUSTERED ([WordFormId] ASC), 
    CONSTRAINT [FK_WordFormPos] FOREIGN KEY ([PosId]) REFERENCES [dbo].[Pos] ([PosId]), 
    CONSTRAINT [FK_WordFormWord] FOREIGN KEY ([WordId]) REFERENCES [dbo].[Word] ([WordId]) 
); 



CREATE TABLE [dbo].[WordDefinition] 
(
    [WordDefinitionId] INT IDENTITY (1, 1) NOT NULL, 
    [WordFormId] VARCHAR (20) NOT NULL, 
    [Definition] VARCHAR (MAX) NOT NULL 
    CONSTRAINT [PK_WordDefinition] PRIMARY KEY CLUSTERED ([WordDefinitionId] ASC), 
) 

最初WordForm表創建持有單一定義,但現在我知道有可能是每個WordForm更多的定義。

爲了實現這個,我添加了WordDefinition表。一個WordForm行到許多WordDefinition行。

但現在我需要做的是通過WordForm表並添加一個條目與原始定義(從WordForm),並將其複製到WordForm中的每一行WordDefinition表中。

這是我只能用SQL做的事情,還是我需要使用遊標。任何幫助和建議如何做到這一點將不勝感激。

回答

1

我想你可以只使用1個查詢INSERT INTO SELECT要做到這一點,是這樣的:

INSERT INTO [dbo].[WordDefinition] 
SELECT [WordFormId], [Definition] 
FROM [dbo].[WordForm] 

之後,你可以從WordForm刪除舊列Definition

+0

謝謝。我會試試這個,稍後再更新這個問題。 – Alan2

+0

@Alan ok現在很快要說謝謝,只是嘗試它,請讓我知道它是否有效。 –

相關問題