Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/22.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 随机选择并对记录进行排序_Sql_Sql Server_Random - Fatal编程技术网

Sql 随机选择并对记录进行排序

Sql 随机选择并对记录进行排序,sql,sql-server,random,Sql,Sql Server,Random,我有一个包含ID、名称和级别列的表。我想通过以下模式选择表的记录: 首先随机选择它们,然后按级别列对这些随机记录进行排序 例如:我的示例表和记录: ID name Level --------------------------------- 1 red-book 1 2 blue-pen 10 3 black-board 12 4 balck-Book 1 5 w

我有一个包含ID、名称和级别列的表。我想通过以下模式选择表的记录: 首先随机选择它们,然后按级别列对这些随机记录进行排序

例如:我的示例表和记录:

ID      name         Level
--------------------------------- 
1      red-book         1
2      blue-pen         10
3      black-board      12
4      balck-Book       1
5      white-book       1
6      red-pen          10
7      green-pen        10
结果应该是这样的:

ID            name             level
------------------------------------------
3             black-board      12
6             red-pen          10
2             blue-pen         10
7             green-pen        10
4             balck-Book       1
1             red-book         1
5             white-book       1
我也用过

 SELECT * FROM MyTable ORDER BY NEWID(),Level DESC


那么,您的问题是什么?您尝试了什么?您使用的是哪一个数据库?随机选择所有记录,然后按降序按级别排序有什么好处?听起来像是一个简单的
SELECT*fromtable ORDER BY level DESC就足够了,我不理解“随机”部分。从表ORDER BY NEWID()中选择*,Levels DESC,我没有看到我想要的asnwer
SELECT*FROM MyTable ORDER BY Level DESC,NEWID()
应该可以工作。就像“SELECT*FROM table ORDER BY NEWID(),Levels DESC”给我的结果一样!它也会对ID列进行排序。
RAND()
在SQL Server中只对每个语句而不是每行计算一次,因此这将不起作用。我的查询按级别降序排列。每个级别的数据都是随机排序的。如果这不是您想要的,那么问题就不清楚了。@Martin Smith在上面的评论中指出使用了mssql。我知道sql server的问题,但对于mssql,这不是问题mssql是sql server。
 SELECT * FROM 
 (SELECT * FROM MyTable ORDERBY NEWID())As TempTbl 
 ORDER BY Level DESC
 CREATE TABLE #MyTempTable (ID INT,name Nvarchar(256),Levels INT)

 INSERT INTO #MyTempTable SELECT * FROM MyTable ORDER BY NEWID()

 SELECT * FROM #MyTempTable ORDER BY Levels DESC
SELECT ID,name,level
FROM sample
ORDER BY level DESC,NEWID()