Knowledge Map

mysql rownum 본문

DataBase

mysql rownum

2016. 6. 2. 09:33

어제 mysql을 이용해서 페이지네이션과 rownum을 붙이는 것을 했었다.


ㅇ 되는 소스


1
2
3
select (@rownum:=@rownum+1) as number, id, name, date 
    from testTable, (select @rownum:=0) as v 
        where id ='tester123' order by number desc;
cs


참고로 했던 여러 소스가 있었는데 그중에는 


ㅇ 안되는 소스


1
2
3
select (@rownum:=@rownum+1) as number, id, name, date 
    from testTable
        where (@rownum:=0)=0 and id ='tester123' order by number desc;
cs


이런 소스도 있었다. 


맨처음에 '안되는 소스' 로 해보았었다. mysql workbench에서는 잘 작동했으나 이상하게 php에서는 rownum만 출력이 안되고 다른 것들은 잘 출력이 되었었다. 이걸로 시간을 보내다가 조금 바꾸어서 잘 실행시키고 완료 했다.


'되는 소스'뒤에 (number desc 뒤에) limit 를 붙이게 되면 게시판의 페이지 네이션 까지 지원되는 쿼리가 완성된다.




출처: http://seuis398.blog.me/70066657549


MySQL에서 세션변수를 이용하여 Oracle의 rownum과 비슷한 기능을 사용할 수 있다.

 

<rownum 사용>


mysql>  SET @rownum:=0 ;

mysql>  SELECT @rownum:=@rownum+1 rownum, name, age FROM tb_sample ; 



세션 변수 초기화는 위와 같이 별도의 SET 구문을 사용하거나, 아래와 같이 FROM, WHERE 절에서 처리도 가능하다.


SELECT @rownum:=@rownum+1 rownum, name, age 

FROM tb_sample, (SELECT @rownum:=0) Tmp 

 

SELECT @rownum:=@rownum+1 rownum, name, age 

FROM tb_sample

WHERE (@rownum:=0)=0



참고할 만한 다른 곳

http://cremazer.blogspot.kr/2013/09/mysql-rownum.html#index5

http://blackbull.tistory.com/43

'DataBase' 카테고리의 다른 글

DB 설정 값, 문자셋 확인  (0) 2016.06.20
convert() 및 cast()  (0) 2016.06.17
테이블 컬럼 검색  (0) 2016.05.26
개별 항목 갯수, 중복 제거 쿼리  (0) 2016.05.18
old password 셋팅, innoDB 에러  (0) 2016.05.18
Comments