如何在C#的数据表中选择随机行?

时间:2013-12-24 12:06:23

标签: sql-server c#-4.0 datatable dataview

我的查询是这样的:

select top 50 Empid from (Select top 50 Empid from Emp inner join campus on Emp.CampusId=campus.CampusId join departments on Emp.department=departments.deptid where campus.Cname='Mumbai' ) x order by NEWID();

但这里数字50不是常数,它是可变的(计算值)。所以,我希望将所有Empids放在一个数据表中然后我需要随机选择其中几个(在上面的示例中为50)..是否可以使用dataview?

2 个答案:

答案 0 :(得分:0)

之前已经回答过。

Is using Random and OrderBy a good shuffle algorithm?

请参阅Jon Skeet实施的Fisher-Yates shuffle。

基本上,随机调整行号或ID,从群体N中选择少量n。

答案 1 :(得分:0)

在T-SQL中,您可以使用SELECT TOP (@variable)代替SELECT TOP 50,如下所示:

Declare @RecCount int 

--//Set the variable @RecCount here

--//Use it to bring the top record as follows
Select top (@RecCount) Empid 
From Emp inner join campus on Emp.CampusId=campus.CampusId 
               join departments on Emp.department=departments.deptid 
Where campus.Cname='Mumbai'
Order by NEWID();