Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- sublime text
- php
- 리눅스
- Mac
- Bybit
- 워드프레스
- 서브라임텍스트
- 윈도우10
- phpstorm
- 테마주
- Linux
- 단축키
- windows10
- pycharm
- timezone
- MySQL
- 안드로이드 스튜디오
- Python
- XE
- Android Studio
- 검색
- 황교안
- 워뇨띠
- JavaScript
- Bitcoin
- 윈도우7
- 줄번호
- 정기결제
- MSSQL
- 제4이동통신
Archives
- Today
- Total
OVERCODE
최대값을 가진 Row 들을 추출하는 SQL 쿼리 2가지 (Group By MAX) 본문
MSSQL, Oracle, MySQL... 공용
최대값이 있는 Row 들을 가지고 오는 방법은 아래와 같이 2가지 방법이 있다.
DB, Index, Table 구조 등에 따라 속도가 달라지기 때문에 때에 맞게 2가지 방법중에 사용하면 된다.
1. Group By 와 MAX 를 이용한 쿼리
SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
SELECT id, MAX(rev) rev
FROM YourTable
GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev
Group BY와 SubQuery를 활용하여 먼저 id와 max값을 가지고 온뒤 INNER JOIN을 이용하여 해당하는 ROW를 찾아오는 쿼리이다.
group by 특성상 해당하는 row의 다른 필드의 값을 가지고 올수가 없다.
2. Self Left Join 을 이용한 쿼리
SELECT a.id, a.rev, a.contents
FROM YourTable a
INNER JOIN (
SELECT id, MAX(rev) rev
FROM YourTable
GROUP BY id
) b ON a.id = b.id AND a.rev = b.rev
Group By 키워드를 사용하지 않고 Self Left Join을 통해 최대값을 찾는 쿼리이다.
`b.rev`가 NULL 이라면 `a.rev`가 최대값이기 때문에 최대값을 가진 row값을 추출을 할수가 있다.
원문출처 : https://helloino.tistory.com/120
'프로그래밍 > SQL' 카테고리의 다른 글
MSSQL 프로시저 내용 검색 (0) | 2021.12.28 |
---|---|
MSSQL Server Management Studio 테이블 변경 시 경고창 뜰때 해결 방법 (0) | 2018.10.17 |
MSSQL Server Management Studio(SSMS) 프로시저 내용 검색, 내용 일치하는 저장 프로시저 검색 (0) | 2018.08.09 |
MSSQL 에이전트 작업 스케줄 (JOB, 일정) 확인하기 (0) | 2018.06.19 |
MS-SQL 테이블 복사 방법 (0) | 2018.06.08 |
Comments