UPDATE : 나는 위와 같이 내 질문을 단순화 할 수 있습니다 생각하지만 더 복잡한 것으로 판명
. 여기 풀 버전이 있습니다. 각 사람에 대해 임의의 3 개의 임의 선택 (MyTable
)을 제공해야하며, 선택/행 번호는 1, 2 및 3이며, 사람과 선택 항목 사이에는 논리적 인 결합이 없습니다.
SELECT * FROM Person
LEFT JOIN (
SELECT top 3 MyId FROM MyTable ORDER BY NEWID()
) D ON 1=1
위의 SQL하다의 문제, 분명히
- , 픽업/행 1, 2, 3을 추가해야
- 의 수와 어떤 명확하지 않다하는 것으로, 위의 SQL입니다 내가 다른 사람에게 다른 종목 여기
을 줄 필요가있는 반면, 각 사람에게 같은 픽을 줄 것이다 것은 그것을 테스트하는 작업 SQL이다 :
SELECT TOP 15 database_id, create_date, cs.name FROM sys.databases
CROSS apply (
SELECT top 3 Row_number()OVER(ORDER BY (SELECT NULL)) AS RowNo,*
FROM (SELECT top 3 name from sys.all_views ORDER BY NEWID()) T
) cs
제발 도와주세요.
참고 : 자신의 구문은, 다른입니다 따라서 솔루션뿐만 아니라 다른 같이이 T-SQL BYT의 MySQL에 대한 하지입니다.
'ROW_NUMBER() OVER에서 유효한 열 이름으로
where
절을 적용 교체' –@Prdp, 들으하지만, 행 번호는 1, 2가 아닌, 3하지만 임의의 무언가. – xpt
임의로 행을 선택하기 때문에 ('ORDER BY NEWID()'에서 'TOP 3'), 우리와 공유하지 않을 샘플 결과에서 어떤 순서로 기대합니까? – HABO