小编eli*_*abk的帖子

如何获得 CTE 中生成的随机数,使其在 JOIN 中不发生更改?

问题

我使用这种技术#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)

sql sql-server random common-table-expression

6
推荐指数
1
解决办法
792
查看次数

标签 统计

common-table-expression ×1

random ×1

sql ×1

sql-server ×1