Smart questions
Smart answers
Smart people
INTELLIGENT WORK FORUMS
FOR COMPUTER PROFESSIONALS

Member Login

Come Join Us!

Are you a
Computer / IT professional?
Join Tek-Tips now!
  • Talk With Other Members
  • Be Notified Of Responses
    To Your Posts
  • Keyword Search
  • One-Click Access To Your
    Favorite Forums
  • Automated Signatures
    On Your Posts
  • Best Of All, It's Free!

Join Tek-Tips
*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.

LINK TO THIS FORUM!

Add Stickiness To Your Site By Linking To This Professionally Managed Technical Forum.
Just copy and paste the
code below into your site.

Partner With Us!

"Best Of Breed" Forums Add Stickiness To Your Site
Partner Button
(Download This Button Today!)

Feedback

"...I just wanted to say how much I have enjoyed these forums. I am a new user and have a lot of elementary questions. I get quick answers with a friendly attitude..."

Geography

Where in the world do Tek-Tips members come from?

Microsoft SQL Server: Programming FAQ

Random Numbers

How Can I Select Random Records From a Table with T-SQL?
Posted: 3 Oct 01 (Edited 6 Jun 03)

/*
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.
*/

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

--Cleanup
Drop table #r
Drop table #t

Go

Back to Microsoft SQL Server: Programming FAQ Index
Back to Microsoft SQL Server: Programming Forum

My Archive

Close Box

Join Tek-Tips® Today!

Join your peers on the Internet's largest technical computer professional community.
It's easy to join and it's free.

Here's Why Members Love Tek-Tips Forums:

Register now while it's still free!

Already a member? Close this window and log in.

Join Us             Close