Random sort in T-SQL
Recently I had a task to return rows from a SQL Server database in random order.
Here is a simple solution:
SELECT * FROM MyTable ORDER BY newid()
Potential applications include selecting a random tip of the day or a random product of the day for any portal/online shop/etc, which is now simple enough by typing the following:
SELECT TOP 1 * FROM MyTable ORDER BY newid()
September 8th, 2007 at 1:57 pm
It appears as though the distribution from newid() is not truly random. When using it in my application, it definately favors a couple of values. This is because machine dependent items (such as the MAC) are used in generating GUIDs. This is probably not a huge deal in most apps (such as a random tip or product), but it kills my app that relies on a truly random distribution :-(.
September 9th, 2007 at 4:56 am
What version of SQL Server are you using? Do you have any test app/example to play with?