SELECT ROW_NUMBER() OVER(ORDER BY sbt.ENTRYDATE DESC, sbt.TARGETNO DESC) PAGESEQ , sbt.TARGETNO , sbt.TARGETYEAR, sbt.CMPID, sbt.CATEGORYID, sbt.TITLE, sbt.SUBTITLE , sbt.BGNDATE, sbt.ENDDATE, sbt.EXEDEPTID, sbt.MGCYCLEID , sbt.SSWRITERSQ, sbt.ENTRYDATE, sbt.UPDDATE, sbt.DELETEFLAG FROM SH_BM_TARGET sbt WHERE sbt.DELETEFLAG = 'N'
마리아DB도 10.2 부터 row_number를 지원하지만 버전이 낮아서 따로 구현해야하는데
이구문을 @row= @row + 1이걸 이용하여 구현하고 싶은데 잘 안되네요... 그리고 추가로
SELECT @row_num:= @row_num + 1 as PAGESEQ , sbe.ZONESQ , sbe.EVTSQ, sbe.USERSQ, sbe.BEACONNO, sbe.EVTTYPE, sbe.ENTRYDATE , sbz.ZONENAME, sbz.DESCRIPTION , sbe.DANGERCODE, sbe.DGSTRDATE, sbe.DGENDDATE FROM SH_BC_EVENTS sbe, (SELECT @row_num:= 0) AS c INNER JOIN SH_BC_ZONES sbz ON sbz.ZONESQ = sbe.ZONESQ WHERE 1 = 1;
이구문을 셀렉해보면 SQL Error [1054] [42S22]: (conn=1201) Unknown column 'sbe.ZONESQ' in 'on clause' 자꾸 언노운 컬럼이라고 하더라구요 그래서
SELECT @row_num:= @row_num + 1 as PAGESEQ , sbe.ZONESQ , sbe.EVTSQ, sbe.USERSQ, sbe.BEACONNO, sbe.EVTTYPE, sbe.ENTRYDATE , sbz.ZONENAME, sbz.DESCRIPTION , sbe.DANGERCODE, sbe.DGSTRDATE, sbe.DGENDDATE FROM SH_BC_EVENTS sbe INNER JOIN SH_BC_ZONES sbz ON sbz.ZONESQ = sbe.ZONESQ WHERE 1 = 1;
이렇게 변경하니 또 되네요... 답변 부탁드리겠습니다.
-- 1. @변수를 이용하여 순번 처리 SELECT @row_num := @row_num + 1 pageseq , sbt.targetno , sbt.targetyear , sbt.cmpid , sbt.categoryid , sbt.title , sbt.subtitle , sbt.bgndate , sbt.enddate , sbt.exedeptid , sbt.mgcycleid , sbt.sswritersq , sbt.entrydate , sbt.upddate , sbt.deleteflag FROM sh_bm_target sbt , (SELECT @row_num:= 0) c WHERE sbt.deleteflag = 'N' ORDER BY sbt.entrydate DESC, sbt.targetno DESC ; 2. 에러가 나는 이유는 ANSI 조인과 컴마 조인을 섞어 쓰면서 c 와 sbz 간의 조인이 되면서 앞에 있는 sbe 를 인식하지 못하는 듯 하네요. c 를 맨 잎에 붙여 보세요. - 변경전 : FROM sbe, c JOIN sbz ON - 변경후 : FROM c, sbe JOIN sbz ON 아니면 조인을 혼합하여 쓰지 마시고 ANSI 조인으로 통일시키세요. - 변경후 : FROM sbe CROSS JOIN c INNER JOIN sbz ON ...