'articles'테이블이 있습니다 : id/uid/last_update/content.SQL 질문 : 각 레코드 그룹에서 임의의 수의 레코드를 선택하는 방법?
테이블에서 가장 최근에 업데이트 된 각 사용자 (uid로 식별 됨)의 레코드 중 임의의 숫자 (예 : 3)를 선택하는 SQL 문을 생성하려고합니다. 어떻게해야합니까?
'articles'테이블이 있습니다 : id/uid/last_update/content.SQL 질문 : 각 레코드 그룹에서 임의의 수의 레코드를 선택하는 방법?
테이블에서 가장 최근에 업데이트 된 각 사용자 (uid로 식별 됨)의 레코드 중 임의의 숫자 (예 : 3)를 선택하는 SQL 문을 생성하려고합니다. 어떻게해야합니까?
SQL Server와 Oracle에서 ROW_NUMBER()를 사용하여 사용자 당 레코드에 레이블을 지정할 수 있습니다. 해당 사용자의 최신 행에 1 = RN 다음 쿼리 태그는 두 번째 최근에 = 2 RN과 :
select *
from (
select
row_number() over (partition by uid order by UpdateDt desc)
as rn
, *
from YourTable
) sub
where rn <= 3
하위 쿼리가 필요합니다 당신은 어디에서 ROW_NUMBER()를 사용할 수 없기 때문에 절 직접.
MySQL을 사용하는 경우이 문제는 훨씬 어렵습니다. 다음은 solution with user variables에 대한 링크입니다.
DECLARE @Top tinyint;
SELECT @Top = ABS(CHECKSUM(NEWID())) % 5 + 1;
;WITH MyCTE AS
(
SELECT
stuff, things,
ROW_NUMBER() OVER (PARTITION BY uid ORDER BY UpdatedDateTime DESC) AS Ranking
FROM
MyTable
)
SELECT
stuff, things
FROM
MyCTE
WHERE
Ranking <= @Top
TopCount = @Top – eugeneK