jPo*_*l34 2 sql-server sql-server-2008
update table1
set firstname = (select top 1 firstname from table2 order by NEWID())
Run Code Online (Sandbox Code Playgroud)
这只是将 table1.firstname 设置为所有记录的相同值。我知道这样做是可能的,但是我在网上看到的所有内容都希望两个表中的行数相同(或者至少表 1 中的行数更多)。我在表 1 中有 200,000 条记录,在表 2 中有 200 条记录。当行计数关闭时,如何将 table1.firstname 设置为 table2.firstname 中的随机值?
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
Run Code Online (Sandbox Code Playgroud)
输出 -
b c
----------- -----------
0 5
1 1
2 0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
810 次 |
| 最近记录: |