如何向单个列添加数据
How to add data to a single column
我有一个关于将数据添加到 table 的特定列的问题,我有一个 (感谢)我需要的,并说更新是一种方式去争取我需要的东西,但我仍然无法实现我的目标。
我有两个 tables,tables 是从哪里添加信息,table 是信息将被添加到哪里,这里有一个例子:
source_table (has only a column called "name_expedient_reviser" that is nvarchar(50))
name_expedient_reviser
kim
randy
phil
cathy
josh
etc.
另一方面,我有目的地 table,这个有两列,一列带有 ID,另一列用于插入名称,该列值为空,有一些 ID将用于此。
这是另一个 table 的样子
dbo_expedient_reviser(有 2 列,unique_reviser_code numeric PK NOT AI,name_expedient_reviser 谁是检查权宜之计的用户,这个设置为 nvarchar(50))也是这个table 现在是这样的:
dbo_expedient_reviser
unique_reviser_code | name_expedient_reviser
1 | NULL
2 | NULL
3 | NULL
4 | NULL
5 | NULL
6 | NULL
我需要的是要插入到行name_expedient_reviser中的source_table的信息,所以结果应该是这样的
dbo_expedient_reviser
unique_reviser_code | name_expedient_reviser
1 | kim
2 | randy
3 | phil
4 | cathy
5 | josh
6 | etc.
如何将信息传递到此 table?我该怎么办?
编辑
我看到的应该有效的查询没有更新是这个:
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
查询应该将信息更新到 table,从 source_table 中提取它,只要行 name_expedient_reviser 为 null,它是但不是工作。
由于名称没有与之关联的 ID,我将只使用 ROW_NUMBER 并加入 ROW_NUMBER = unique_reviser_code。唯一的问题是,知道哪些行为空。据我所见,它们都显示为空。在您的数据中,是这种情况还是 table 中偶尔有名称,如 5、17、29...等?如果 dbo_expedient_reviser 中的 name_expedient_reviser 为空,您还可以截断 table 并直接插入值。希望 unique_reviser_code 还没有链接到其他东西。
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
无法将数据插入到单个列中,但在这种情况下更新和移动所需数据是唯一的方法
我有一个关于将数据添加到 table 的特定列的问题,我有一个
我有两个 tables,tables 是从哪里添加信息,table 是信息将被添加到哪里,这里有一个例子:
source_table (has only a column called "name_expedient_reviser" that is nvarchar(50))
name_expedient_reviser
kim
randy
phil
cathy
josh
etc.
另一方面,我有目的地 table,这个有两列,一列带有 ID,另一列用于插入名称,该列值为空,有一些 ID将用于此。
这是另一个 table 的样子
dbo_expedient_reviser(有 2 列,unique_reviser_code numeric PK NOT AI,name_expedient_reviser 谁是检查权宜之计的用户,这个设置为 nvarchar(50))也是这个table 现在是这样的:
dbo_expedient_reviser
unique_reviser_code | name_expedient_reviser
1 | NULL
2 | NULL
3 | NULL
4 | NULL
5 | NULL
6 | NULL
我需要的是要插入到行name_expedient_reviser中的source_table的信息,所以结果应该是这样的
dbo_expedient_reviser
unique_reviser_code | name_expedient_reviser
1 | kim
2 | randy
3 | phil
4 | cathy
5 | josh
6 | etc.
如何将信息传递到此 table?我该怎么办?
编辑
我看到的应该有效的查询没有更新是这个:
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
查询应该将信息更新到 table,从 source_table 中提取它,只要行 name_expedient_reviser 为 null,它是但不是工作。
由于名称没有与之关联的 ID,我将只使用 ROW_NUMBER 并加入 ROW_NUMBER = unique_reviser_code。唯一的问题是,知道哪些行为空。据我所见,它们都显示为空。在您的数据中,是这种情况还是 table 中偶尔有名称,如 5、17、29...等?如果 dbo_expedient_reviser 中的 name_expedient_reviser 为空,您还可以截断 table 并直接插入值。希望 unique_reviser_code 还没有链接到其他东西。
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
无法将数据插入到单个列中,但在这种情况下更新和移动所需数据是唯一的方法