SELECT A.id, A.col1, B.col2, B.created_at
FROM A
LEFT JOIN (
SELECT id, col2, created_at,
ROW_NUMBER() OVER (PARTITION BY id ORDER BY created_at DESC) AS rn
FROM B
) B ON A.id = B.id AND B.rn = 1;
설명
1. ROW_NUMBER() OVER (PARTITION
BY id ORDER BY created_at
DESC)
> B 테이블에서 id 기준으로 그룹화하고,
created
Lat DESC(최신순)으로 정렬 각 그룹에서 가장 최신인 데이터에 rn = 1 부여
2. LEFT JOIN B ON A.id = B.id
AND B.rn = 1
• In = 1인 데이터만 가져와서 A 테이블과 조인
특정 기준(예: created_at 말고 다른 정렬 기준)으로 데이터를 가져오고 싶다면 ORDER BY
부분을 수정하면 됩니다.
반응형