带有选择性标准的 TSQL 随机选择

TSQL Random Select with Selective Criteria(带有选择性标准的 TSQL 随机选择)
本文介绍了带有选择性标准的 TSQL 随机选择的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

问题描述

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

My database has 5 categories in table "category". I also have a table called "items", where each item has unique Id and a category Id FK.

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

I need to randomly select 10 items from 1 category.

如果只有 1 个类别,这不会有问题.但是表items"以非顺序存储类别id.

This would not be problem if there was only 1 category. But table "items" stores categories id in non-sequential order.

下面的随机选择语句有效并且能够在一个范围内生成随机 ID.但是如何生成 10 个属于同一类别的随机 ID?

The random select statement below works and is able to generate random IDs within a range. But how can I generate 10 random IDs that belong to the same category?

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)

推荐答案

使用

  • 过滤类别的 WHERE
  • 新增随机行
  • TOP 限制您最多 10 个项目

所以:

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

这篇关于带有选择性标准的 TSQL 随机选择的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Dynamically group by with quot;Group Headerquot;(使用“组头动态分组)
How to retrieve leaf path in parent-child table in SQL Server with root ID?(如何使用根 ID 在 SQL Server 中的父子表中检索叶路径?)
Tsql union in while loop(while循环中的Tsql联合)
Pass a column as parameter to dateadd in SQL Server(将列作为参数传递给 SQL Server 中的 dateadd)
Is it possible to convert rows to a variable number of columns in T-SQL?(是否可以在 T-SQL 中将行转换为可变数量的列?)
Swap values between two rows of data(在两行数据之间交换值)