INTELLIGENT WORK FORUMS FOR COMPUTER PROFESSIONALS
Come Join Us!
- Talk With Other Members
- Be Notified Of Responses
To Your Posts
- Keyword Search
- Turn Off Ad Banners
- One-Click Access To Your
Favorite Forums
- Automated Signatures
On Your Posts
- Best Of All, It's Free!
*Tek-Tips's functionality depends on members receiving e-mail. By joining you are opting in to receive e-mail.
Partner With Us!
"Best Of Breed" Forums Add Stickiness To Your Site

(Download This Button Today!)
Member Feedback
"...Keep up the good work - excellent site - i'd been looking for something like this for ages !..."
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 FAQ Archive
Email This FAQ To A Friend |
|
 |
|