가장 최근 데이터를 조회 하려면?
- select max(id), name, age from T1 group by name, age;
정답.
만약, group by에 빠진 컬럼이 있다면?
- select max(id), name, age from T1 group by name;
이렇게 age가 group by 에서 빠지게 되면 이름과 age가 정상적으로 맵핑되지 않는다.
case 1. 그럼 조인할 때는?
select max(t1.id), t1.name, t2.address ... from t1 inner join t2
on t1.id = t2.id
group by t1.name, t2.address ....
이렇게 컬럼 갯수가 많아지면, 조회하는 컬럼 전체를 group by로 지정하기 어려움.
그러면 이렇게 하면 된다.
select t1.name, t2.address from t1 inner join t2 on t1.id = t2.id
where t1.id in (select max(id) from t1 group by name)
이렇게 name으로 그룹핑한 가장최신의 id 를 가진 데이터만 조회하여 데이터를 추출 가능.
'DataBase > SQL' 카테고리의 다른 글
SELECT 시 COLUMN 값에 따라 ROW별로 다른 검색조건을 적용하기. (0) | 2021.07.28 |
---|---|
[SQL/쿼리 튜닝] 조인조건 변경을 통한 속도 개선 (0) | 2021.05.13 |
한 컬럼에 대해서 두 개 이상의 조건을 적용하는 쿼리 (0) | 2021.05.13 |
소계 쿼리. (0) | 2021.02.03 |
[MySQL] Pivot 쿼리. (0) | 2021.02.03 |