2013-09-25 81 views
1

我有一个表,它有ID,名称和级别columns.I要选择该模式的表的记录: 首先随机选择他们,然后按级别列排序这些随机记录。随机选择并排序记录

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

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 
+1

那么,什么是你的问题,你尝试过什么? –

+0

你正在使用哪个数据库? –

+1

如何选择所有记录*随机选择,然后按降序排序?听起来像一个简单的'SELECT * FROM table ORDER BY level DESC;'就够了,我不明白“随机”部分。 –

回答

2
SELECT ID,name,level 
FROM sample 
ORDER BY level DESC,NEWID() 
+0

就像“SELECT * FROM table ORDER BY NEWID(),Levels DESC”给了我相同的结果!它也对ID列进行排序。 – MortezaJ

+0

'RAND()'只在SQL Server中对每行语句而不是每行评估一次,所以这不起作用。 –

+0

我的查询按级别降序排列。每个级别的数据都是随机排列的。如果这不是你想要的,那么问题就不清楚了。 – Wietze314