2013-09-25 80 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