具有选择标准的TSQL随机选择

时间:2011-08-29 13:28:13

标签: sql sql-server tsql

我的数据库在表“类别”中有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)

2 个答案:

答案 0 :(得分:6)

使用

  • 过滤到类别的地点
  • 随机化行的NEWID
  • TOP限制你有10件

所以:

SELECT TOP 10
   *
FROM
   Items
WHERE
   CategoryID = @whatever
ORDER BY
   NEWID()

答案 1 :(得分:5)

select top 10 * from items where categoryid = 1 order by newid()