Random Czy istnieje opcja losowego wyboru losowego rekordu z baz. Oczywiście, że tak.

Wszystkie rozwiązanie koncentrują się wygenerowaniu losowej liczby, a potem przypisanie jej do polecenia OrderBY. 

Dla SQL Serwera rozwiązanie tego problemu jest następujące

USE AdventureWorks2014
GO

	SELECT TOP (10) [BusinessEntityID]
		  ,[FirstName]
		  ,[MiddleName]
	  FROM [AdventureWorks2014].[Person].[Person]
	  ORDER BY NEWID()

GO

NewId() stworzy z każdym razem inną losową liczbę, co gwarantuje mały brak potworzeń w takiej losowości.

Jak rozwiązanie wygląda w innych bazach :

MySql:

SELECT column FROM table
ORDER BY RAND()
LIMIT 10

PostgreSQL:

SELECT column FROM table
ORDER BY RANDOM()
LIMIT 10

Oracle

SELECT column FROM
( SELECT column FROM table
ORDER BY dbms_random.value )
WHERE rownum = 10

A czy można zrobić jakieś inne podejście niż korzystanie z generowanych liczb losowych dla każdego rekordu.

Można wylosować ID, które chcemy pobrać. Oto przykład jak to zrobić w SQL Server

USE AdventureWorks2014
GO

	SELECT TOP (10) [BusinessEntityID]
		  ,[FirstName]
		  ,[MiddleName]
	  FROM [AdventureWorks2014].[Person].[Person]
	  WHERE [BusinessEntityID] >= RAND() * (SELECT MAX([BusinessEntityID] + 1) 
          FROM [AdventureWorks2014].[Person].[Person])

GO