Sql 随机选择并对记录进行排序
我有一个包含ID、名称和级别列的表。我想通过以下模式选择表的记录: 首先随机选择它们,然后按级别列对这些随机记录进行排序 例如:我的示例表和记录: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 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,我没有看到我想要的asnwerSELECT*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()