如何使用另一个 table 的值列表更新一列的每一行?
How to update each row of a column from one table with a list of values from another?
我有一个 table A,其中只有 1 列的记录是随机字母数字字符。 table 有 10 行。
我还有另一个有 10 行的 table B,我想从 table A 的一行中获取一个值并将其应用于 table B 中的一行。
所以基本上,从 Table A 中取一个值并将其分配给 table B 中的一行。最好从 table A 行 1 中取值并将其分配给table B行1等...
我正在使用 SQL 服务器。
我们可以将 table B 中的任何值分配给 table A 中的一行。我们只是不能重复使用 table B 中的值。
以下是此示例中最简单形式的 2 个 table:
创建 TableA([值] NVARCHAR(50))
创建 TableB([值] NVARCHAR(50))
给定以下 table 结构:
CREATE TABLE #tempA (stringEntry NVARCHAR(50));
INSERT INTO #tempA (stringEntry) VALUES ('abcd'), ('efgh'), ('ijkl');
CREATE TABLE #tempB (stringEntry NVARCHAR(50));
INSERT INTO #tempB (stringEntry) VALUES ('mnop'), ('qrst'), ('uvwx');
您可以执行以下操作:
SELECT
ROW_NUMBER() OVER(ORDER BY #tempA.stringEntry) AS RowNumber,
#tempA.stringEntry AS entryA
INTO #tempA2
FROM #tempA;
SELECT
ROW_NUMBER() OVER(ORDER BY #tempB.stringEntry) AS RowNumber,
#tempB.stringEntry AS entryB
INTO #tempB2
FROM #tempB;
UPDATE #tempA
SET #tempA.stringEntry = #tempB2.entryB
FROM #tempA
INNER JOIN #tempA2 ON #tempA.stringEntry = #tempA2.entryA
INNER JOIN #tempB2 ON #tempB2.RowNumber = #tempA2.RowNumber;
这假设您在每个 table 中有相同数量的行,如您所指出的,或者可以接受不更新第一个 table 中的“多余”条目。
我有一个 table A,其中只有 1 列的记录是随机字母数字字符。 table 有 10 行。
我还有另一个有 10 行的 table B,我想从 table A 的一行中获取一个值并将其应用于 table B 中的一行。
所以基本上,从 Table A 中取一个值并将其分配给 table B 中的一行。最好从 table A 行 1 中取值并将其分配给table B行1等...
我正在使用 SQL 服务器。
我们可以将 table B 中的任何值分配给 table A 中的一行。我们只是不能重复使用 table B 中的值。
以下是此示例中最简单形式的 2 个 table:
创建 TableA([值] NVARCHAR(50))
创建 TableB([值] NVARCHAR(50))
给定以下 table 结构:
CREATE TABLE #tempA (stringEntry NVARCHAR(50));
INSERT INTO #tempA (stringEntry) VALUES ('abcd'), ('efgh'), ('ijkl');
CREATE TABLE #tempB (stringEntry NVARCHAR(50));
INSERT INTO #tempB (stringEntry) VALUES ('mnop'), ('qrst'), ('uvwx');
您可以执行以下操作:
SELECT
ROW_NUMBER() OVER(ORDER BY #tempA.stringEntry) AS RowNumber,
#tempA.stringEntry AS entryA
INTO #tempA2
FROM #tempA;
SELECT
ROW_NUMBER() OVER(ORDER BY #tempB.stringEntry) AS RowNumber,
#tempB.stringEntry AS entryB
INTO #tempB2
FROM #tempB;
UPDATE #tempA
SET #tempA.stringEntry = #tempB2.entryB
FROM #tempA
INNER JOIN #tempA2 ON #tempA.stringEntry = #tempA2.entryA
INNER JOIN #tempB2 ON #tempB2.RowNumber = #tempA2.RowNumber;
这假设您在每个 table 中有相同数量的行,如您所指出的,或者可以接受不更新第一个 table 中的“多余”条目。