muYe0ng
31
2021-11-14 17:45:16
3
172

쿼리를 어떻게 짜야될까요?



select * 
from (SELECT @ROWNUM := @ROWNUM + 1 AS ROWNUM, board_review.*
FROM board_review,(SELECT @ROWNUM:=0) TMP
ORDER BY board_review_regit_date DESC, board_review_seq DESC) s
ORDER BY s.ROWNUM LIMIT #{startNum}, #{repeatNum}

select * from board_review where goods_seq=#{goods_seq}
		

예로 goods_seq 값이 17인 board_review 테이블 안의 데이터들을 가져오려고 합니다.




select * from board_review where goods_seq=17, (SELECT @ROWNUM := @ROWNUM + 1 AS ROWNUM, board_review.*
FROM board_review, (SELECT @ROWNUM:=0) TMP
ORDER BY board_review_regit_date DESC, board_review_seq DESC) s;

하나로 합치고 싶은데 where절을 어디에 넣어야 문법에러가 안날지 잘 모르겠습니다 ㅜㅜ


mybatis사용중 인데 둘로 나눠서 사용하려면 컨트롤러에서 두개를 줘야 할까요?





0
  • 답변 3

  • 장독깨기
    3k
    2021-11-14 19:11:57

    마리아 db 인가요? 그럼 row_number() 사용하면 간단히 해결할 수 있습니다.

    select row_number() over(order by board_review_seq desc), a.*

    from board_review a

    where goods_seq = 17

    order by board_deview_seq desc

    limit 0,10

  • muYe0ng
    31
    2021-11-14 20:16:48 작성 2021-11-14 20:17:15 수정됨

    장독깨기  

    답변 감사합니다 선배님

    mysql을 사용하고 있습니다! 근데 적어주신 코드가 mysql에서도 동작을 하네요 다만 row_number() over(order by board_review_seq desc) 이 부분이 칼럼이름으로 들어가버리네요 아마 달라서 그런거겠죠?? 귀한시간 내주셔서 감사합니다!

  • 장독깨기
    3k
    2021-11-14 20:41:35

    mysql 이 오라클로 넘어가면서 그때 포커한게 마리아 일 겁니다.

    그니까, 기본적으로 거의 유사하다고 보시면 됩니다.

    ㅎㅎ 알리아스를 주셔야죠. select row_number() over(order by board_review_seq desc) as rownum, a.*

    열심히 하세요. :)

  • 로그인을 하시면 답변을 등록할 수 있습니다.