воскресенье, 14 июня 2009 г.

T-SQL. Выбор N случайных записей из таблицы БД.

Задача: СУБД MS SQL Server 2005, требуется выбрать случайные записи из таблицы MyTable в количестве N штук.
Решение: использовать функцию NEWID(), которая генерирует случайный GUID:

SELECT TOP(@N) * FROM MyTable ORDER BY NEWID()

где @N - параметр, количество записей.
Приведённый выше запрос с помощью NEWID() генерирует случайный GUID (строку вроде "686c1b0f-4bae-4c58-8a19-01904a67c3d8") для каждой записи таблицы, затем сортирует результат по этим GUID и выбирает первые N записей.

1 комментарий:

Boogier комментирует...

такой способ только для маленького количества строк и для редких обращений к таблице, т.к. быстродействие явно оставляет желать лучшего...