Случайная строка из таблицы. SQL Server 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)
blog comments powered by Disqus