/*
This T-SQL script demonstrates one method for selecting random records from a table. The example uses an employees table. However, It could be used to select from any table with a unique identifier or primary key column.
Created by Terry L. Broadbent, Oct 3 2001
Please inform me of any bugs encountered. Comments and suggestions for improvement are encouraged.
*/
[tt]
--Stop display of "row(s) affected messages
Set nocount on
--Create temporary table with identity column
Create table #t (EmpID char(6), RecID int identity(1,1))
--Create temporary table to hold randomly selected identifiers
Create table #r (EmpID char(6) constraint lnu unique)
--Select records from table into 1st temp table
Insert #t (EmpID)
Select EmpID From Employees
Where Status=1
Order By EmpID
--Declare variables needed for looping and counting
DECLARE @count int, @recno int, @rndno int
SELECT @count=COUNT(*) FROM #t
--Determine number of records to select
SET @recno=50
--Loop and slect records
While @recno>0
Begin
--Generate a random number
SET @rndno=@count * RAND() + 1
--Insert record if not already on table
Insert #r (EmpID)
Select EmpID From #t
Where RecID=@rndno
And Not Exists (Select * From #r Where EmpID=#t.EmpID)
--Decrement counter if record was inserted
If @@rowcount>0 SET @recno=@recno-1
End
--Return result set containing the selected records
SELECT e.*
FROM Employees e Inner Join #r
ON e.EmpID = #r.EmpID
This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.
By continuing to use this site, you are consenting to our use of cookies.