저번엔 가장 최근데이터 가져오기를 짤막하게 포스팅했는데
이번엔 그룹별 최근 데이터를 가져오는 일이 생겼다.
사실 저렇게 해야하는줄 알았는데 어차피 반복문 돌려서 배열을 만들었어야 했지만....
아래 참고 블로그링크를 걸어 놓겠다.
똑같은 쿼리지만 그래도 내가 글을 적어놓는게 한번 더 기억할거니까 :)
헣허... 컬럼이 좀 많지만 다 무시하고 우선 내가 원하는 목표는
eventId로 묶은 그룹별 최신 데이터를 두개만 가져오는 것이었다.
그러니 eventId와 regDate를 사용하게 될 것 같다.
SELECT *, rnum FROM(
SELECT a.*,
(CASE @groupId WHEN a.eventId THEN @rownum:=@rownum+1 ELSE @rownum:=1 END) AS rnum,
(@groupId:=a.eventId) groupId
FROM product_event_items_log AS a
ORDER BY a.eventId, a.regDate
) AS LOG
WHERE rnum <=2
최종 쿼리문이다. 내가 또 @이친구는 처음봤다...🙀 @변수명 으로 사용한다.
사실 처음봤을때 분석하기 싫었다. 그냥 복붙하고 싶게 생겼다...ㅠㅠ
그래도 차근차근 :)
처음엔 SELECT * FROM ( ) AS log 까지만 써주고 천천히 직접 써내려갔다.
(CASE @groupId WHEN a.eventId THEN @rownum:=@rownum+1 ELSE @rownum:=1 END) AS rnum
해당 문장은 rnum이라는 변수를 하나 만들어 준거다.
@groupId가 eventId와 같다면 rownum에 +1 그렇지 않으면 1
(@groupId:=a.eventId) groupId
그리고 groupId를 eventId로 초기화
내가 이해한걸 php로 그려보면 아래와 같은 느낌이었당
$groupId = "";
for($i=0; $i<count($list); $i++){
if( $groupId == $list[i]['eventId'] ){
$rownum++;
}
else{
$rownum = 1;
}
groupId = $list[i]['eventId'];
}
다음에 또 쓰일 일이 있을것 같아 포스팅 하구 간다.
그럼 이만 뿅! 금요일을 마무리하고 주말을 보내러 가겠다 ㅎㅎ
참고 블로그 : https://blackbull.tistory.com/43
'~ 2024.08' 카테고리의 다른 글
[ html2canvas / jszip ] html화면 캡쳐 zip파일로 다운받기 (0) | 2020.03.17 |
---|---|
[ Node.js / Webpack ] 이번엔 웹팩 🤜 (0) | 2020.03.14 |
[ 원페이지 스크롤 + 일반 스크롤 ] 화나서 직접 만든 원페이지 스크롤 2탄 (0) | 2020.03.12 |
다중 정렬 ( 드래그 앤 드랍 ) (0) | 2020.03.06 |
[Node.js] 실시간 멀티 채팅 만들기 3탄 (브로드캐스팅) (2) | 2020.02.23 |