【问题标题】:Select randomly And Sort the records随机选择并对记录进行排序
【发布时间】:2013-09-25 11:20:33
【问题描述】:

我有一个包含 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 * 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 * FROM table ORDER BY level DESC; 就足够了,我不明白“随机”部分。
  • SELECT * FROM table ORDER BY NEWID(),Levels DESC 我没有看到我想要的答案!
  • SELECT * FROM MyTable ORDER BY Level DESC, NEWID() 应该可以工作。

标签: sql sql-server random


【解决方案1】:
SELECT ID,name,level
FROM sample
ORDER BY level DESC,NEWID()

【讨论】:

  • 就像“SELECT * FROM table ORDER BY NEWID(),Levels DESC”一样给我同样的结果!它也对 ID 列进行排序。
  • RAND() 在 SQL Server 中每条语句而不是每行只评估一次,因此这不起作用。
  • 我的查询按级别降序排列。每个级别的数据都是随机排序的。如果这不是您想要的,那么问题就不清楚了。
  • @Martin Smith 在上面的 cmets 中声明使用了 mssql。我知道 sql server 的问题,但使用 mssql 这不是问题
  • mssql sql server.
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多