Update
-
SQLite 행번호(행넘버, row number) 조회하고 UPDATE하기Database/SQLite 2024. 2. 28. 20:41
기존테이블에는 아이디와 네임, 같은 기본 정보들만 존재하는데 순번이 추가되어야 하는 상황이다. 이 순번은 서로 바뀔 수도 있기 때문에 꼭 칼럼을 추가해야 한다. 순번 칼럼을 추가하면, 기존에 있는 데이터는 순번 데이터가 NULL이 되기 때문에 기존 데이터는 등록일 기준으로 순번 데이터를 업데이트 하려고 한다. SEQ_NO 칼럼을 추가 한 직후의 테이블을 조회하면 아래와 같다. 1. 순번 조회하기SQLite에는 순번을 쉽게 구할 수 있는 내장 함수를 지원한다. (3.8.3 이상) 대표적으로 RANK와 ROW_NUMBER가 있다. RANK와 ROW_NUMBER는 사용하는 방법은 동일하지만 결과는 조금 다르다.1) RANK()SELECT RANK() OVER (ORDER BY CREATE_DATE) AS SE..
-
MSSQL SELECT와 UPDATE 동시에 하기Database/MSSQL 2018. 10. 2. 11:51
프로그램 내에서데이터를 select하여 가져온 다음에 row 하나씩 작업을 처리한 후 row 하나를 update를 하는 과정이처리속도가 오래 걸리는 문제가 있었다. select한 데이터는 플래그만 바꿔주면 되는 간단한 문제인데 처리속도가 느려서 그 뒤에 작업들도 너무 오래 걸린다. 방법을 달리하였다.update를 프로그램이 수행을 하여 느려진 것이니데이터베이스 자체에서, 쿼리에서 처리가 되도록 하는 방법을 생각했다.MSSQL은 저장프로시저가 있으니 저장프로시저에서 작업이 일어나고프로그램에선 프로시저를 실행해 데이터만 가져오면 된다. 1. 임시테이블을 만든다.declare @AAA table ([CreateDate] [datetime] NOT NULL, [UserID] [varchar](8) NOT NUL..
-
MSSQL UPDATE with row_number()Database/MSSQL 2018. 9. 4. 09:13
시퀀스 또는 인덱스 칼럼을 나중에 만들었을 경우 그 칼럼의 값은 NULL일 것이고, 값을 중복되지 않은 값들로 1씩 증가하여 채워야지 정상적으로 자동증가값으로 변경할 수 있다. 이 때, 이 칼럼을 행번호로 채우면 되지 않을까. WITH ttt AS (select ROW_NUMBER() over (order by [CreateDate]) as rownum, * from MyTable)update ttt set IN_DEX=rownum