2014-10-25 3 views
0

나는 TSQL 쿼리의 레코드 목록을 가지고 있습니다. 이제 출력 결과에서 임의의 5 행을 선택하려는 특정 상황에 처해 있습니다. 여기 SQL에서 임의의 행 선택

는 이미지에서 보면 내가에서

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 

written-했습니다이 쿼리에 따라 오는 많은 행이 지금에서 그 결과

enter image description here

의 스냅 샷입니다 query- 저는 비디오 사이트를 관리하고 있습니다.보기가 낮은 비디오가 나오는 섹션을 구현하고 싶습니다. 이 쿼리에서이 테이블은 Videos입니다. 이제 비디오를 볼 때마다 테이블 video_views에 행이 나열됩니다. 나는이보기를 100보다 작은보기의 레코드 만 내림차순으로 올리는 방식으로이 쿼리를 작성했습니다.

내 결과에 따르면보기가 100 미만인 많은 레코드가 표시됩니다. 이제이 목록에서 5 개의 임의의 행을 선택하려고했습니다.

작동하려면 어떻게 접근해야합니까?

답변

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과 같은 정수 상수에 작은 따옴표를 사용하지 마십시오.

+0

아주 좋습니다. 특정 수의 임의의 행을 선택하려면 어떻게해야합니까? – Manoj

+0

@Manoz. . . '톱 5 '를 사용하십시오. –