2014-11-03 132 views
-1

我想從表A填充t_code到表B,其中表A「名稱」像表B「名稱」,但我有一些問題獲得代碼工作。我希望有人可以幫助我解決語法上的問題,因爲我是使用遊標的noob。謝謝你的幫助。從一個表讀取數據到另一個基於Like「row_value」

所有幫助的附錄。

DECLARE c CURSOR READ_ONLY FAST_FORWARD FOR 
    SELECT name 
    FROM [GA_EMPLOYEE2] 

DECLARE @id VARCHAR(255) 

-- Open the cursor 
OPEN c 

FETCH NEXT FROM c INTO @id 
WHILE (@@FETCH_STATUS = 0) 
BEGIN 
    INSERT INTO [GA].[dbo].[GA_EMPLOYEE2].[t_code] 
    SELECT [GA].[dbo].[GA_EMPLOYEE1].[t_code] 
    WHERE [GA].[dbo].[GA_EMPLOYEE1].[name] LIKE '%@id%' 



    FETCH NEXT FROM c INTO @id 
END 

-- Close and deallocate the cursor 
CLOSE c 
DEALLOCATE c 
+0

根本不需要遊標,但是您確定要插入新行,而不是更新表B中的現有行嗎? – 2014-11-03 15:12:34

回答

1

所以......它看起來像你從EMPLOYEE2EMPLOYEE1抓的名單,然後對每個t碼,其中name是在列表中,您要插入的EMPLOYEE1tcodeEMPLOYEE2

不需要這個CURSOR rigamaroo。這是一個具有INNER JOIN一個非常基本的INSERT語句:

INSERT INTO [GA].[dbo].[GA_EMPLOYEE2].[t_code] 
SELECT [GA].[dbo].[GA_EMPLOYEE1].[t_code] 
FROM [GA].[dbo].[GA_EMPLOYEE1] 
    INNER JOIN [GA_EMPLOYEE2] ON 
    [GA].[dbo].[GA_EMPLOYEE1].[name] LIKE [GA_EMPLOYEE2].[name] 

雖然我有一種感覺,你的代碼不充分地描述你的意圖。也許你想UPDATEEMPLOYEE2記錄每個NAMEtcode匹配EMPLOYEE1表中找到。如果是,則:

UPDATE 
    [GA].[dbo].[GA_EMPLOYEE2] 
SET 
    [GA].[dbo].[GA_EMPLOYEE2].[t_code] = [GA].[dbo].[GA_EMPLOYEE1].[t_code] 
FROM 
    [GA].[dbo].[GA_EMPLOYEE2] 
    INNER JOIN [GA].[dbo].[GA_EMPLOYEE1] ON 
     [GA].[dbo].[GA_EMPLOYEE2].[name] = [GA].[dbo].[GA_EMPLOYEE1].[name]; 
+0

非常感謝。甚至沒有想到這一點。 – user1054844 2014-11-04 07:09:28