Выберите случайные строки семян на сервере SQL

Я пытаюсь выбрать случайные строки в Sql Server, используя начальное число. Я знаю о функции newid()Однако я не мог найти способ использовать начальное число с этой функцией. Я хочу запустить такой код:

select user_id from users;
go

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

Спасибо Клинт

2 ответа

Это из MSDN, который выберет число от 0 до 99 и примерно 10 процентов:

SELECT * FROM Table1
WHERE (ABS(CAST(
(BINARY_CHECKSUM(*) *
RAND()) as int)) % 100) < 10

Итак, если вы хотите от 0 до 19, используйте, например, 20 вместо 100.

У меня не очень элегантное решение, но стоит попробовать, как:

SELECT DISTINCT user_id, user_name, RandVal  FROM (
SELECT CAST(RIGHT(CAST(RAND(user_id)*100 as varchar(100)),3) as int) as RandVal,    user_id, user_name
FROM users) T
WHERE RandVal BETWEEN 700 and 900

Посмотрите мою демонстрацию Fiddle

я использовал user_id как семя.

И этот тоже:

SELECT TOP 5 user_id, MAX(user_name), MAX(RandVal) as RandVal FROM (
SELECT CAST(RIGHT(CAST(RAND(user_id)*100 as varchar(100)),2) as int) as RandVal,     user_id, user_name
FROM users) T
GROUP BY user_id
ORDER BY RandVal

Смотрите мое демо для этого тоже.

Попробуйте это, чтобы получить 10 случайных пользователей:

SELECT user_id From users WHERE rand()>0.5 limit 10;
Другие вопросы по тегам