Sql 根据类似的“行值”将数据从一个表读取到另一个表
我试图将t_代码从表A填充到表B,其中表A的名称类似于表B的名称,但我在让代码正常工作方面遇到了一些问题 语法有什么问题?我是使用游标的初学者Sql 根据类似的“行值”将数据从一个表读取到另一个表,sql,sql-server,syntax,Sql,Sql Server,Syntax,我试图将t_代码从表A填充到表B,其中表A的名称类似于表B的名称,但我在让代码正常工作方面遇到了一些问题 语法有什么问题?我是使用游标的初学者 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 (@@FETC
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
所以。。。看起来您正在从EMPLOYEE2获取一个姓名列表,然后对于EMPLOYEE1中的每个tcode(姓名在列表中),您正在将EMPLOYEE1 tcode插入EMPLOYEE2 不需要所有这些。这是一个非常基本的INSERT语句,具有内部联接: 虽然我觉得你的代码没有充分描述你的意图。也许您希望使用在匹配的EMPLOYEE1表中找到的tcode更新每个名称的EMPLOYEE2记录。若有,则:
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];
您根本不需要游标,但您确定要插入新行,而不是更新表B中的现有行吗?非常感谢。我甚至没想到。
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];