我的数据库在表“类别”中有5个类别。 我还有一个名为“items”的表,其中每个项目都有唯一的Id和类别Id FK。
我需要从1个类别中随机选择10个项目。
如果只有一个类别,这不会有问题。但表“items”以非连续顺序存储类别id。
下面的随机选择语句有效,并且能够生成范围内的随机ID。但是,如何生成属于同一类别的10个随机ID?
Declare @maxRandomValue tinyint = 100
, @minRandomValue tinyint = 0;
Select Cast(((@maxRandomValue + 1) - @minRandomValue)
* Rand() + @minRandomValue As tinyint) As 'randomNumber';
Defintions:
Table Categories
ID INT
Desc Varchar(100)
Table Items
ID Int
CategoryID Int (fk)
Desc Varchar(100)
答案 0 :(得分:6)
使用
所以:
SELECT TOP 10
*
FROM
Items
WHERE
CategoryID = @whatever
ORDER BY
NEWID()
答案 1 :(得分:5)
select top 10 * from items where categoryid = 1 order by newid()