DECLARE @Random INT;
DECLARE @Upper INT;
DECLARE @Lower INT
---- This will create a random number between 1 and 999
SET @Lower = 1 ---- The lowest random number
SET @Upper = 999 ---- The highest random number
SET @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SELECT *
FROM TABLE_NAME
ORDER BY CHOSEN_COLUMN
OFFSET @RANDOM ROWS
FETCH NEXT 1 ROWS ONLY
Это по существу сделает то, что вы просите, и хорошо проведете время.Это означает, что вы объявляете верхнюю и нижнюю граничные числа для функции RAND()
, чтобы выбрать число.Затем мы используем функцию ROUND()
, так как Rand()
возвращает число с плавающей точкой.
Просто установите все, что вы хотите, чтобы ваш @upper
(наибольшее число) был, в моем случае 999. Затем он выбирает все столбцы из вашей таблицы, OFFSETS
, так что в основном пропускает случайное количество X строк иполучает следующий 1 ряд после этого.Вы можете изменить числа, такие как часть выборки, и сказать FETCH NEXT 100 ROWS ONLY
, если хотите вернуть следующие 100.
Или если вы хотите возвращать случайное число каждый раз 100 раз (так, случайные 100 строк)тогда мы могли бы использовать цикл while со счетчиком, так что будьте так:
DECLARE @Random INT;
DECLARE @Upper INT;
DECLARE @Lower INT
DECLARE @Cnt INT;
---- This will create a random number between 1 and 999
SET @Lower = 1 ---- The lowest random number
SET @Upper = 999 ---- The highest random number
SET @Random = ROUND(((@Upper - @Lower -1) * RAND() + @Lower), 0)
SET @CNT = 0
WHILE @cnt <= 20
BEGIN
SELECT *
FROM TABLE_NAME
ORDER BY CHOSEN_COLUMN
OFFSET @RANDOM ROWS
FETCH NEXT 1 ROWS ONLY
SET @cnt = @cnt + 1
END
В моем случае я установил cnt на 20, так что это вернет случайные 20 записей и т. д.
Надеюсьэто помогает!:)