TSQL Random Select с выборочными критериями
Моя база данных имеет 5 категорий в таблице «категория». У меня также есть таблица под названием «items», где каждый элемент имеет уникальный идентификатор и идентификатор категории FK.
Мне нужно случайным образом выбрать 10 предметов из 1 категории.
Это не было бы проблемой, если бы была только одна категория. Но в «элементах» таблицы хранится категория id в неупорядоченном порядке.
Оператор случайного выбора ниже работает и способен генерировать случайные идентификаторы в пределах диапазона. Но как я могу сгенерировать 10 случайных идентификаторов, относящихся к одной и той же категории?
Declare @maxRandomValue tinyint = 100 , @minRandomValue tinyint = 0; Select Cast(((@maxRandomValue + 1) - @minRandomValue) * Rand() + @minRandomValue As tinyint) As 'randomNumber';
ОПРЕДЕЛЕНИЯХ:
Table Categories ID INT Desc Varchar(100) Table Items ID Int CategoryID Int (fk) Desc Varchar(100)
использование
- ГДЕ, чтобы отфильтровать категорию
- NEWID для рандомизации строк
- TOP, чтобы ограничить вас до 10 предметов
Так:
SELECT TOP 10 * FROM Items WHERE CategoryID = @whatever ORDER BY NEWID()
select top 10 * from items where categoryid = 1 order by newid()