将字段设置为另一个表中的随机值

时间:2016-03-23 17:27:42

标签: sql-server sql-server-2008

{{1}}

这只是将table1.firstname设置为所有记录的相同值。我知道可以这样做,但我在网上看到的所有内容都要求两个表中的行数相同(或者至少表1中的数量更多)。 table1中有200,000条记录,table2中有200条记录。当行计数关闭时,如何将table1.firstname设置为table2.firstname中的随机值?

1 个答案:

答案 0 :(得分:4)

DECLARE @t1 TABLE (a INT)
DECLARE @t2 TABLE (b INT, c INT)

INSERT INTO @t1(a)
VALUES (0), (1), (2), (3), (4), (5)

INSERT INTO @t2(b)
VALUES (0), (1), (2)

UPDATE t2
SET c = t1.a
FROM @t2 t2
CROSS APPLY (
    SELECT TOP(1) t1.a
    FROM @t1 t1
    WHERE t2.b IS NOT NULL -- any calculations for t2 columns
    ORDER BY NEWID()
) t1

SELECT * FROM @t2

输出 -

b           c
----------- -----------
0           5
1           1
2           0