2013-09-25 3 views
1

У меня есть таблица, в которой есть идентификаторы, имена и столбцы уровня. Я хочу ВЫБРАТЬ записи таблицы по этому шаблону: Сначала выберите их случайно, а затем отсортируйте эти случайные записи по столбцу уровня.Выберите случайным образом и отсортируйте записи

, например: мой пример таблицы и записи:

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» дает мне тот же результат! он сортирует столбец идентификатора. – MortezaJ

+0

'RAND()' оценивается только один раз за оператор не для каждой строки SQL Server, поэтому это не сработает. –

+0

Мои запросы заказы по уровню по убыванию. На уровне данные упорядочиваются случайным образом. Если это не то, что вы хотите, вопрос неясен. – Wietze314

Смежные вопросы