Случайная строка из таблицы. SQL Server 2005.

| рубрика: Программирование | автор: st
Метки:

Воспользуемся псевдослучайной последовательностью на основе механизма проекций (view) для выборки случайной строки из таблицы.

Проекция rand2 выдает новое случайное число в поле rand_value. Для выборки строки создадим еще одну проекцию:

CREATE VIEW random_row
AS
WITH t1_rows AS (
    SELECT id, row_number() OVER (order by id) as num FROM T1
)
SELECT id, num
FROM t1_rows
WHERE num = (SELECT floor(count(*) * (SELECT rand_value from rand2) + 1) FROM T1);

Проверяем на данных из все той же таблицы T1:

SELECT * FROM random_row;
SELECT * FROM random_row;

Результат:

id          num
----------- --------------------
3           3

(1 row(s) affected)

id          num
----------- --------------------
2           2

(1 row(s) affected)