Випадкова вибірка рядків з таблиці SQL Server, Інтерактивний підручник SQL
Свого часу ми використовували випадкову вибірку записів для формування списку тестових питань. Ми робили це на клієнті, використовуючи функції базової мови, що генерують псевдовипадкове число в заданому діапазоні (наприклад, функція RND Visual Basic).
Проте виявилося, що досить легко це можна організувати і сервері. Причому зробити це можна як аналогічними засобами (за допомогою функції RAND у T-SQL) так і на основі типу даних uniqueidentifier, який називається глобальним унікальним ідентифікатором і має вигляд:
Для вирішення нашого завдання важливим є те, що цей унікальний ідентифікатор може генеруватися автоматично при використанні функції NEWID . Просто напишіть у QA (Query Analyzer) або в MS (Management Studio)

Так ось, ідея полягає в тому, щоб в запит, що повертає потрібну кількість записів, додати стовпець NEWID, що обчислюється, по якому повинна виконуватися сортування. Оскільки генеровані значення довільні, ми отримаємо випадкову вибірку.
Отже, нехай нам потрібно вибрати дві довільні моделі із таблиці Product:

Або більш просто

Виконаємо цей запит кілька разів:
Якщо бажаєте, можете продовжити.
Тепер повернемося до «традиційного» способу. Функція RAND генерує псевдовипадкове число з точкою, що плаває, в діапазоні від 0 до 1.
Термін "псевдовипадкове" означає, що таке число обчислюється за допомогою деякого арифметичного алгоритму. Тобто за однакових початкових (вхідних) умов отримуване число буде одним і тим самим. Ці початкові умови можуть бути явно задані за допомогою аргументу функції, яким може бути будь-яке число типу tinyint, int або smallint, або неявно. Уостанньому випадку аргумент опускається, в результаті чого початкове значення буде обрано Мова структурованих запитів) - універсальна комп'ютерна мова, що застосовується для створення, модифікації та управління даними в базах реляційних даних. SQL Server.
Спробуємо виконати наступний запит:

Виконаємо цей запит у QA. У мене вийшло: 0.0485421339242268 та 0.72009490018203537. Можна впевнено стверджувати, що перше число у вас інше, проте друге може бути тим самим, оскільки в другому випадку ми задали початкове значення (350).