Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2005 按随机顺序选择行,然后将其反转_Sql Server 2005 - Fatal编程技术网

Sql server 2005 按随机顺序选择行,然后将其反转

Sql server 2005 按随机顺序选择行,然后将其反转,sql-server-2005,Sql Server 2005,我需要以随机顺序选择行,并返回一个查询,该查询以常规顺序和反向顺序保存行。这是为了模拟我正在进行的一场篮球比赛的梦幻选秀 例如,我需要一个结果集,如下所示: team1 1 team2 2 team6 3 team9 4 team9 5 team6 6 team2 7 team1 8 正如你所看到的,前四支队伍是随机的,然后接下来的四支队伍是相反的顺序。 希望我能解释问题,如果没有-请评论,我会进一步解释。您可以使用如下查询: select top(10) teamname, NewId()

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

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

team1 1
team2 2
team6 3
team9 4
team9 5
team6 6
team2 7
team1 8
正如你所看到的,前四支队伍是随机的,然后接下来的四支队伍是相反的顺序。
希望我能解释问题,如果没有-请评论,我会进一步解释。

您可以使用如下查询:

select top(10) teamname, NewId() as Random
from teams
order by Random

这将从数据库中返回前十名随机团队。然后,您可以使用一些代码将其反转。

您必须按缓存随机顺序的结果

在这段代码中,如果您在联合体中引用CTE,它将被计算两次,您将得到两个不同的订单。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

使用虚拟交叉联接复制行很容易,但这也需要对中间结果进行排序和行编号。我不认为它可以在一个SQL语句中完成

我认为iraklis的意思是你不使用SQL,所以“一些代码”会在你的程序中,而你没有提供语言;很抱歉我的程序完全基于SQL。因此,我需要在没有任何外部干扰的情况下按请求返回行。我认为这是可能的,通过一个复杂的选择,如果不是-我感谢你的努力,尽管如此。