[MySQL] 조회 할 때 관련 글 번호가 여러개 이면 최대값(max)인 글 조회 관련 질문 드립니다. 0 6 3,135

by 홍이 [MySQL] MySQL Query SQL [2018.11.09 11:14:19]


안녕하세요 테이블에 관련 글번호 컬럼이 있는데 이값이 여러개 이면 그것중 최대 값(max)인 값을 조회 하고 싶어서 질문 드립니다.

테이블에 아래와 같이 데이터가 있을 때

id seq manage_seq path
AA1 1 1 result/test/201811091102
AA1 1 2 result/test/201811091105
AA1 1 3 result/test/201811091110
AA2 1 1 result/test/201811091102
AA3 1 1 result/test/201811091101
AA4 1 1 result/test/201811091102

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

SELECT id, SEQ, max(MANAGE_SEQ) AS MANAGE_SEQ,path from test_1 GROUP BY id,seq 이렇게 조회를 하니

원하는 형식으로 구성은 되었으나 path값이 정확하지 않아 질문 드립니다.

path값이 manage_seq가 1인 값이 출력이 됩니다.

id SEQ MANAGE_SEQ path
AA1 1 3 result/test/201811091102
AA2 1 1 result/test/201811091102
AA3 1 1 result/test/201811091101
AA4 1 1 result/test/201811091102

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

제가 원하는 결과값은 아래 처럼 나왔으면 하는데 쿼리를 어떻게 수정 해야 할지 질문 드립니다.

id SEQ MANAGE_SEQ path
AA1 1 3 result/test/201811091110
AA2 1 1 result/test/201811091102
AA3 1 1 result/test/201811091101
AA4 1 1 result/test/201811091102

 

감사합니다.

 

by 춤과파티 [2018.11.09 13:19:28]

궁금한게 있는데 group by 하실 때 path 컬럼은 그룹핑을 안하셨는데 그래도 되나요?


by 홍이 [2018.11.09 13:31:24]

path컬럼도 같이 그룹핑을 하면은 아래처럼 MANAGE_SEQ 1,2 로우도 같이 나와서 지웠어요

id SEQ MANAGE_SEQ path
AA1 1 1 result/test/201811091102
AA1 1 2 result/test/201811091105
AA1 1 3 result/test/201811091110
AA2 1 1 result/test/201811091102
AA3 1 1 result/test/201811091101
AA4 1 1 result/test/201811091102

 


by 마농 [2018.11.09 16:58:56]

MySQL 에서만 허용되는 비표준 Group By 구문입니다.
Group By 에 없는 항목도 표시가 가능하죠. 타 DBMS 에서는 에러나는 구문.
하지만 표준 구문 사용하시길 권장드려요.
 

SELECT b.*
  FROM test_1 a
 INNER JOIN
       (SELECT id
             , seq
             , MAX(manage_seq) manage_seq
          FROM test_1
         GROUP BY id, seq
        ) b
    ON a.id         = b.id
   AND a.seq        = b.seq
   AND a.manage_seq = b.manage_seq
;

 


by 홍이 [2018.11.09 17:08:14]

마농님 항상 답변 감사합니다!!


by 소주쵝오 [2018.11.09 17:05:04]
select a.id
     , a.seq
     , a.manage_seq
     , a.path
from test_1 a
   , (SELECT id
           , SEQ
           , max(MANAGE_SEQ) AS MANAGE_SEQ
      from test_1
      group by id, seq) b
where a.id = b.id
and a.seq = b.seq
and a.manage_seq = b.manage_seq
;

by 홍이 [2018.11.09 17:08:38]

소주쵝오님 감사합니다!!

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입