这与我想要做的一致:
UPDATE [table1]
SET FirstName IN (SELECT [FirstName] FROM [table2])
我需要在[table1]上更新300个名称,名称在[table2]中。这些名字是NULLS。它们需要是[table2]的名称。
记录集可以是随机的。因此表之间不需要任何关系。
我将如何做到这一点?
答案 0 :(得分:3)
忽略丢失的关系,排序问题或任何可能导致数据不准确的问题,您可以尝试这样做,任意分配行号到两个表中的每个记录,并将这两个表与该数字一起匹配,然后根据该匹配更新名称字段:
WITH Source AS
(
SELECT
Name, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS RowNum
FROM
[Table2]
),
Destination AS
(
SELECT
Name, ROW_NUMBER() OVER (ORDER BY (SELECT 1)) AS RowNum
FROM
[Table1]
)
UPDATE
d
SET
d.Name = s.Name
FROM
Source s
JOIN
Destination d
ON
s.RowNum = d.RowNum
但是:没有让一个表与另一个表相关的具体内容,最终可能会将源表中的300个名称复制到目标表中随机化的300行中。< / p>
编辑:根据您对想要随机数据的评论,如果您将ROW_NUMBER()
列更改为:
ROW_NUMBER() OVER (ORDER BY (SELECT NEWID()))
你会真正得到一些随机数据。
答案 1 :(得分:2)
我需要300个名字来填充[table1]和 名称在[table2]中。
填充意味着插入,然后这工作:
INSERT INTO table1
SELECT FirstName FROM table2;
答案 2 :(得分:1)
如果您只是尝试在表1中创建新记录,请执行以下操作:
insert into Table1 (FirstName)
select FirstName from Table2
如果您需要更新记录,请执行以下操作:
update t1
set FirstName = t2.FirstName,
LastName = t2.LastName
from Table1 t1
join Table2 t2 on t1.ID = t2.ID -- (or whatever key you are using to join the two tables)