Добавить комментарий

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

Воспользуемся псевдослучайной последовательностью на основе механизма проекций (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)