我在TSQL查询中有一个记录列表。 现在我处于某种情况,我想从输出结果中选择随机的5行。
以下是结果的快照 -
现在,如果您从图像中看到我根据此查询已经写了很多行 -
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行。
我应该如何接近它以使其正常工作?
答案 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
。