Knowledge Map
mysql rownum 본문
어제 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
'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 |