Sql server 如何向单个列添加数据

Sql server 如何向单个列添加数据,sql-server,sql-server-2008,Sql Server,Sql Server 2008,我有一个关于向表的特定列添加数据的问题,我对我需要的东西有一个(感谢)答案,并说更新是实现我需要的东西的方法,但我仍然无法实现我的目标 我有两个表,一个是添加信息的表,另一个是添加信息的表,下面是一个示例: source_table (has only a column called "name_expedient_reviser" that is nvarchar(50)) name_expedient_reviser kim randy phil cathy josh etc. 另一方面

我有一个关于向表的特定列添加数据的问题,我对我需要的东西有一个(感谢)答案,并说更新是实现我需要的东西的方法,但我仍然无法实现我的目标

我有两个表,一个是添加信息的表,另一个是添加信息的表,下面是一个示例:

source_table  (has only a column called "name_expedient_reviser" that is nvarchar(50))
name_expedient_reviser
kim
randy
phil
cathy
josh
etc.
另一方面,我有一个目标表,这个表有两列,一列带有ID,另一列将插入名称,这个列的值为空,有一些ID将用于此

这是另一张桌子的样子

dbo_Equipment_reviser(有两列,唯一的_reviser_代码数字PK NOT AI,名称_Equipment_reviser是检查Equipment的用户,此项设置为nvarchar(50)),这也是此表现在的方式:

dbo_expedient_reviser
unique_reviser_code | name_expedient_reviser 
1                   | NULL
2                   | NULL
3                   | NULL
4                   | NULL
5                   | NULL
6                   | NULL
我需要的是要插入到行名称\u方便\u修订器中的源\u表的信息,因此结果应该如下所示

dbo_expedient_reviser
unique_reviser_code | name_expedient_reviser 
1                   | kim
2                   | randy
3                   | phil
4                   | cathy
5                   | josh
6                   | etc.
我怎样才能将信息传递到此表中?我该怎么办

编辑

我看到的本应有效的查询没有更新以下哪一个:

UPDATE dbo_expedient_reviser
SET dbo_expedient_reviser.name_expedient_reviser = source_table.name_expedient_reviser
FROM source_table
JOIN dbo_expedient_reviser ON source_table.name_expedient_reviser = dbo_expedient_reviser.name_expedient_reviser
WHERE dbo_expedient_reviser.name_expedient_reviser IS NULL 

查询应该将信息更新到表中,从源表中提取信息,只要行名称\u方便\u reviser为空,但不起作用。

因为这些名称没有与它们相关联的Id,所以我只使用行编号并连接行编号=唯一的\u reviser\u代码。唯一的问题是,知道哪些行是空的。在我看来,它们都是空的。在您的数据中,是这种情况,还是表中偶尔会出现5、17、29……等名称?如果dbo\u phastict\u reviser中的名称\u phastict\u reviser为空,则还可以截断表并直接插入值。希望唯一的修订者代码没有链接到其他东西

WITH CTE (name_expedient_reviser, unique_reviser_code)
AS
    (
    SELECT   name_expedient_reviser
            ,ROW_NUMBER() OVER (ORDER BY name_expedient_reviser)
    FROM source_table
    )
UPDATE er
SET er.name_expedient_reviser = cte.name_expedient_reviser      
FROM dbo_expedient_reviser er
JOIN CTE on cte.unique_reviser_code = er.unique_reviser_code
或截断:

Truncate Table dbo_expedient_reviser

INSERT INTO dbo_expedient_reviser (name_expedient_reviser, unique_reviser_code)
SELECT DISTINCT
    unique_reviser_code = ROW_NUMBER() OVER (ORDER BY name_expedient_reviser)
   ,name_expedient_reviser
FROM source_table

无法将数据插入到单个列中,但在这种情况下,更新和移动所需数据是唯一的方法

你好,nick,谢谢你的回复,我将尝试你的建议,并告诉你它是如何工作的Dear nick,你的代码非常适合我的需要,非常感谢你的帮助,我很乐意尽我所能帮助你。