在sql中选择随机行

时间:2014-10-25 13:19:05

标签: sql sql-server tsql

我在TSQL查询中有一个记录列表。 现在我处于某种情况,我想从输出结果中选择随机的5行。

以下是结果的快照 -

enter image description here

现在,如果您从图像中看到我根据此查询已经写了很多行 -

declare @table1 table
    (
    cnt bigint,
    vid bigint
    )
    insert into @table1(cnt,vid) select count(video_id)as counts,video_views.video_id from video_views where video_views.is_active='True' group by video_views.video_id 
    select videos.*,vid from @table1 
    left join videos on videos.video_id=vid
    where cnt< '100' order by cnt desc 

在查询中 我正在管理一个视频网站,我想在哪里实现一个视频低视频的部分。 此查询中的此表为Videos,现在每当查看视频时,其视图都会在表video_views中列出一行。 我已经编写了这个查询,只有那些视图小于100的记录才能按降序排列。

正如您所看到的,我的结果显示了许多记录,其中视图小于100。现在我想从这个列表中随机选择5行。

我应该如何接近它以使其正常工作?

1 个答案:

答案 0 :(得分:1)

SQL Server中的规范方法是使用order by newid()

select top 5 videos.*, vid
from @table1 left join
     videos
     on videos.video_id=vid
where cnt < 100
order by newid() desc ;

如果性能问题,还有其他选择。

注意:您应该仅对字符串和日期常量使用单引号。不要使用单引号作为整数常量,例如100