테스트를 위해서 임시적인 데이터와 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를 만들 수 있다. 

+ Recent posts