Potrzebna mi funkcja losująca pytania. O jak świetnie – jest w TSQL funkcja RAND(), która zwraca losową wartość, ale…:
USE AdventureWorks2008R2
SELECT TOP(10) p.LastName, RAND() AS rnd FROM Person.Person p
ORDER BY rnd
…zwraca zawsze te same rekordy! Dlaczego? Bo RAND uruchomił się jeden raz i w każdym rekordzie wartość w kolumnie rnd jest taka sama.
Trzeba więc generować coś losowego w taki sposób, aby wartość powstawała dla każdego rekordu. Zapytanie poniżej radzi sobie ztym idealnie:
SELECT TOP(10) p.LastName, NEWID() AS rnd FROM Person.Person p
ORDER BY rnd