如何用另一个表的值列表更新一个表中列的每一行



我有一个表a,其中只有一列记录是随机字母数字字符。那张桌子大概有10行。

我有另一个有10行的表B,我想从表a的一行中取一个值,并将其应用于表B中的一行。

因此,基本上,从表a中取一个值,并将其分配给表B中的一行。最好从表a的第1行取值,然后将其分配到表B的第1列,等等

我正在使用SQL Server。

我们可以从表B中取任何值来分配给表a中的一行。我们不能重复使用表B中的值。

以下是本例中最简单的两个表格:

CREATE TableA([Value]NVARCHAR(50((

CREATE TableB([Value]NVARCHAR(50((

给定以下表格结构:

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;

这假设您在每个表中有相同数量的行,正如您所指出的,或者可以使用";过量";第一个表中的条目未更新。

最新更新