带选择标准的TSQL随机选择

带选择标准的TSQL随机选择,sql,sql-server,tsql,Sql,Sql Server,Tsql,我的数据库在表“category”中有5个类别。 我还有一个名为“items”的表,其中每个项都有唯一的Id和类别Id FK 我需要从一个类别中随机选择10个项目 如果只有一个类别,这就不会是问题。但表“items”以非顺序顺序存储类别id 下面的随机选择语句可以工作,并且能够在一定范围内生成随机ID。但是如何生成10个属于同一类别的随机ID呢 Declare @maxRandomValue tinyint = 100 , @minRandomValue tinyint = 0; Se

我的数据库在表“category”中有5个类别。 我还有一个名为“items”的表,其中每个项都有唯一的Id和类别Id FK

我需要从一个类别中随机选择10个项目

如果只有一个类别,这就不会是问题。但表“items”以非顺序顺序存储类别id

下面的随机选择语句可以工作,并且能够在一定范围内生成随机ID。但是如何生成10个属于同一类别的随机ID呢

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件
因此:


查看
从dbo.MyTable ORDER BY NEWID()中选择前10个*总是适合我。
select top 10 * from items where categoryid = 1 order by newid()
SELECT TOP 10
   *
FROM
   Items
WHERE
   CategoryID = @whatever
ORDER BY
   NEWID()