테스트를 위해서 임시적인 데이터와 SEQ_NO를 만들어서 테스트해야하는 경우가 있었다.
그래서 임시 테이블과 임시 SEQ_NO를 생성하는 방법을 알아보자.
물론 여러가지 방법이 있겠지만 내가 주로 사용했던 방법을 기록하고자 한다.
CREATE TEMPORARY TABLE temp_table (
id INT PRIMARY KEY,
name VARCHAR(50),
created_at DATETIME
);
INSERT INTO temp_table (id, name, created_at)
VALUES
(3, '뚱이', NOW()),
(4, '스폰지밥', NOW()),
(5, '징징이', NOW()),
(6, '다람이', NOW()),
(7, '집게사장', NOW()),
(8, '플랑크톤', NOW()),
(9, '메롱시티', NOW());
위의 방법으로 임시테이블과 임시데이터를 생성할 수 있었다.
이제 임시 SEQ_NO를 생성하려고 하는데 검색해서 알아본 결과 ROW_NUMBER를 활용해서 만들라고 하더라.
SELECT id,
name,
created_at,
ROW_NUMBER() OVER (ORDER BY created_at) AS seqNo
FROM temp_table;
그래서 이용만들려고 하니
'1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(ORDER BY created_at) AS seqNo, name, created_at FROM temp_table' at line 2 0.000 sec'
이 오류가 생기네???
알아보니 ROW_NUMBER는 MySQL version 8.0 이상부터 가능하다고 하더라.
내 version을 확인해보니
5.7대네...그럼 어떻게 해야하지....
하다가
SET을 활용하라고 하더라.
SET @seqNO = 0;
SELECT
id,
name,
created_at,
(@seqNO := @seqNO + 2) AS SEQ_NO
FROM temp_table
ORDER BY name;
이런 식으로 내가 원하는 증가량 만큼 임시 SEQ_NO를 만들 수 있다.