gpt4 book ai didi

sql-server-2005 - 以随机顺序选择行,然后将其反转

转载 作者:行者123 更新时间:2023-12-04 06:37:55 26 4
gpt4 key购买 nike

我需要以随机顺序选择行并返回一个查询,该查询以常规顺序和相反顺序保存行。这样做是为了模拟我正在制作的篮球比赛的幻想选秀。

例如,我需要一个结果集如下:

team1 1
team2 2
team6 3
team9 4
team9 5
team6 6
team2 7
team1 8

如您所见,前四支队伍是随机的,然后后面四支队伍的顺序相反。
希望我设法解释了这个问题,如果没有 - 请发表评论,我会进一步解释。

最佳答案

您必须“缓存”随机 ORDER BY 的结果。

在此代码中,如果您引用 UNION 中的 CTE,它将被评估两次,并且您将有 2 个不同的订单。 CTE 只是一个宏

;WITH cList AS
(
SELECT team, ROW_NUMBER() OVER (ORDER BY NEWID()) AS rn
FROM teams
)
SELECT * INTO #tempresults FROM cList WHERE rn <= @rn --or however many

SELECT *, rn FROM #tempresults
UNION ALL
SELECT *, (2 * @rn) - rn FROM #tempresults
ORDER BY rn

使用虚拟交叉连接 ( like this) 可以轻松复制行,但这也需要对中间结果进行排序和行编号。我不认为它可以在单个 SQL 语句中完成

关于sql-server-2005 - 以随机顺序选择行,然后将其反转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4639983/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com