SQL SERVER按顺序随机排序

时间:2016-06-03 09:59:37

标签: sql database random sql-order-by sql-server-2000

我想以随机顺序显示记录,最简单的答案是order by NEWID(),这很好。

我从EmployeesID1 100。输出需要以随机序列显示,即

30.31.32.33...40..20.21.22..30..80.81.82..90.1.2.3..10..and so on..

如果有100条记录,则应分为10个部分,每个部分随机显示。

我试过的CODE是:

select empId,empName from employees
where empID between 1 and 100
order by NEWID()


INPUT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
输出
50 51 52 53 54 55 56 57 58 59 60 90 91 92 93 94 95 96 97 98 99 100 30 31 32 33 34 35 36 37 38 39 40 10 11 12 13 14 15 16 17 18 19 20 20 21 22 23 24 25 26 27 28 29 30 70 71 72 73 74 75 76 77 78 79 80 60 61 62 63 64 65 66 67 68 69 70 1 2 3 4 5 6 7 8 9 10 40 41 42 43 44 45 46 47 48 49 50 80 81 82 83 84 85 86 87 88 89 90

1 个答案:

答案 0 :(得分:0)

我将使用NORTHWND.[dbo].[Employees],它有9名员工。

USE tempdb;
GO
SET NOCOUNT ON;
CREATE TABLE #SAMPLE_DATA
(
    empID int,
    ni uniqueidentifier 
);

INSERT INTO #SAMPLE_DATA(empID, ni ) 
SELECT  [EmployeeID], NEWID()
FROM NORTHWND.[dbo].[Employees]
ORDER BY NEWID()

DECLARE @Values VARCHAR(1000)

SELECT @Values = COALESCE(@Values + ' ', '') + CAST(empID AS varchar(50))
FROM #SAMPLE_DATA
ORDER BY ni 

SELECT @Values;

DROP TABLE #SAMPLE_DATA;

输出:

2 6 4 1 3 9 7 8 5

下次运行:

8 5 3 1 6 4 7 9 2