본문 바로가기
왕초보 개발일지/기타

세션변수 (순번매기기), mysql limit

by n년차초보개발자 2022. 10. 31.
728x90
반응형

세션변수 : 각 사용자에 대해 로그인 시간에 초기화 되는 변수

 

oracle에서처럼 rownum을 이용해서 순번을 매겨보려고 했는데 

mysql의 여러가지 방법 중 @가 붙은 변수들을 사용하는 것을 볼 수 있었다.

@가 붙은 변수들을 세션변수라고 하며 세션이 종료될 때 까지 사용할 수 있다고 한다.

(@가 붙지 않은 변수들은 전역변수임)

 

사용예시

 

1. 검색전에 초기화 하는 방법

 

1-1. 초기화(세션변수 rownum을 0으로 초기화 하였다.)

set @rownum:=0;

 

1-2. select @rownum:=@rownum+1 from  테이블명;

초기화 후 검색 시 숫자가 순서대로 증가한다.
초기화 하지 않으면 검색시 마다 숫자가 계속 증가한다

 

2. from절에서 초기화 하는 방법

select @rownum:=@rownum+1 

from  테이블명,(SELECT @rownum:=0) test; ;

초기화를 from절에 새 테이블로 붙여줌. 붙여준 서브쿼리에 별칭없으면 오류남

 

3. where절에서 초기화 하는 방법

select @rownum:=@rownum+1 

from  테이블명

where (@rownum:=0) = 0; 

 

 

※ 1부터 10까지 총 10개의 데이터 가져오기

case1 ) 서브쿼리를 이용

SELECT *
FROM(
select @rownum:=@rownum+1  rownum
FROM  테이블명
WHERE (@rownum:=0) = 0
) A
WHERE A.rownum < 10; 

 

case2 ) mysql에서는 limit를 사용할 수 있다
select @rownum:=@rownum+1  rownum
FROM  테이블명
WHERE (@rownum:=0) = 0
LIMIT 9;

 

 

limit 10 => 10개 가져오기

limit 3,10 => (0부터 시작하는 인덱스 기준) 3번부터 10개 추출

 

이 때 총 추출 갯수는 10개이기 때문에 둘다 1,2,3,4,...10이 출력되게 된다.

728x90
반응형

'왕초보 개발일지 > 기타' 카테고리의 다른 글

[heidiSQL]null데이터 색칠하기  (1) 2022.11.03
[ELK]키바나  (2) 2022.11.01
여러줄 문자 한번에 수정하기.  (0) 2022.10.28
Git vs SVN  (0) 2022.10.27
여러줄 문자 한번에 수정하기.  (0) 2022.10.27

댓글