问题
我使用这种技术#Table_1为 CTE中表中的每一行生成一个随机数。然后我将 CTE 的结果加入到另一个表 上。我不是为 中的每一行获取随机数,而是为连接中的每个结果行获取一个新的随机数!#Table_2#Table_1
CREATE TABLE #Table_1 (Id INT)
CREATE TABLE #Table_2 (MyId INT, ParentId INT)
INSERT INTO #Table_1
VALUES (1), (2), (3)
INSERT INTO #Table_2
VALUES (1, 1), (2, 1), (3, 1), (4, 1), (1, 2), (2, 2), (3, 2), (1, 3)
;WITH RandomCTE AS
(
SELECT Id, (ABS(CHECKSUM(NewId())) % 5)RandomNumber
FROM #Table_1
)
SELECT r.Id, t.MyId, r.RandomNumber
FROM RandomCTE r
INNER JOIN #Table_2 t
ON r.Id = t.ParentId
Run Code Online (Sandbox Code Playgroud)
结果
Id MyId …Run Code Online (Sandbox Code Playgroud)