これは私がやりたいことの線に沿っています:
UPDATE [table1]
SET FirstName IN (SELECT [FirstName] FROM [table2])
[table1]で更新する必要のある名前は300あり、名前は[table2]にあります。名前はNULLSです。[table2]の名前である必要があります。
レコードセットはランダムにすることができます。したがって、テーブル間に関係は必要ありません。
どうすればこれを行うことができますか?
欠落している関係、順序付けの問題、またはデータが不正確になる可能性のあるものを無視して、これを試すことができます。これにより、2つのテーブルの各レコードに行番号が任意に割り当てられ、2つのテーブルがその番号と一致します。次に、その一致に基づいて[名前]フィールドを更新します。
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行のランダム化されたセットにコピーされる可能性があります。
編集:ROW_NUMBER()
列を次のように変更した場合、ランダム化されたデータが必要であるというコメントに基づきます。
ROW_NUMBER() OVER (ORDER BY (SELECT NEWID()))
あなたは本当にいくつかのランダム化されたデータを取得します。
[table1]に入力する必要のある名前は300あり、名前は[table2]にあります。
Populateは挿入を意味し、これは機能します。
INSERT INTO table1
SELECT FirstName FROM table2;
表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)