MySQL에서 Oracle처럼 ROWNUM 사용법
SET구문을 사용하여 ROWNUM 값을 초기화 후 조회
SET @rownum:=0; SELECT @rownum:=@rownum+1, b.* FROM buyingboard bWHERE절에서 초기화
SELECT @rownum:=@rownum+1, b.* FROM buyingboard b WHERE (@rownum:=0)=0;FROM절에서 초기화
SELECT @rownum:=@rownum+1, b.* FROM buyingboard b, (SELECT @rownum:=0) TMP;모두 결과가 아래와 같이 나온다.
But 초기화를 시키지 않을 경우 조회 할 때마다 번호가 바뀌게 된다.
ORDER BY 를 사용할 경우 (SELEC를 한번 더!)
SELECT @ROWNUM := @ROWNUM + 1 AS ROWNUM, A.* FROM (SELECT * FROM buyingboard ORDER BY bno DESC) A, (SELECT @ROWNUM := 0 ) BJOIN문을 사용할 경우
① (SELECT @rownum:=0) TMP;를 JOIN문 아래에 추가
② INNER JOIN 사용 - INNER JOIN (SELECT @rownum:=0) T2
자동 번호 생성하기
ALTER TABLE article MODIFY COLUMN id INT(10) NOT NULL AUTO_INCREMENT;auto_increment 를 걸기전에 해당 칼럼은 무조건 key 여야 함 (ALTER TABLE article ADD PRIMARY KEY(id))
id 칼럼에 UNSIGNED 속성 추가 (음수가 필요없기 때문에 사용)
alter table article modify column id int(10) unsigned not null auto_increment;새 데이터 추가해보기 (id에 auto_increment 적용되었는지 확인하기)
INSERT INTO article SET regDate = NOW(), title = '새 데이터', `body` = '새 데이터'; INSERT INTO article SET regDate = NOW(), title = '새 데이터', `body` = '새 데이터';Mysql에서 primary key 로 보통 사용하는 auto_increment의 index값 말고,
데이터에 행 연속된 번호를 부여 하고 싶은 경우가 있을 겁니다.
이 경우에는 쿼리 문에 변수와 변수 연산을 해주면됩니다.
MYSQL에서 변수는 @변수명 으로 선언, 사용 할 수 있으며, 대입 연산자로는 := 을 쓰고 있습니다.
그러므로
SELECT * FROM table WHERE score > 80 ORDER BY score
라는 쿼리에서 연속된 행 번호를 만들고 싶다면,
SELECT 구문에
@rownum := @rownum +1 AS 컬럼명
으로 넣어 주면 됩니다. 하지만 이렇게만 하면 에러가 생깁니다. 변수가 선언(declare되지 않았기 때문이죠)
그래서 FROM 문에 추가 해주도록 합니다
FROM table, (SELECT @rownum:=0 )
SELECT 구문전에 실행되는 FROM 절에서, 서브쿼리(sub query)를 이용해서,
rownum 이라는 변수를 초기화 해주었습니다.
그래서 전체 구문은
SELECT @rownum:@rownum+1 AS 컬럼명, * FROM table, (SELECT @rownum:=0)
이런식으로 사용 가능합니다.
[MySQL] select 리스트에서 줄번호 만들기
MySQL 에서 리스트를 select 시에 순서에 따른 줄번호가 필요한 경우가 있습니다.
이런 경우 사용자 변수에 값을 대입해서 사용할 수 있습니다.
select @num:=@num+1 as num, idx, title from (select @num:=0) a, board b order by idx descnum 필드값이 1부터 시작해서 1씩 증가해서 반환됩니다. 페이징 등에서 초기값을 변경할려면
(select @num:=10) a,위의 코드처럼 이 부분에서 초기값을 변경하면 됩니다.
티스토리 뷰
SELECT 한 값 앞에 행 번호를 매기고 싶을 때 유용한 방법.
오라클의 rownum 함수 기능을 다음과 같이 만들어 사용할 수 있다.
예)
SELECT @num:=@num+1 AS num, title, name FROM (SELECT @num:=0) AS n, 테이블명결과값
num | title | name |
1 | 제목1 | 이름1 |
2 | 제목2 | 이름2 |
3 | 제목3 | 이름3 |
4 | 제목4 | 이름4 |
... | ... | ... |