데이터베이스를 관리하다 보면 때때로 같은 테이블 내에서 한 컬럼의 데이터를 다른 컬럼으로 복사하고 싶은 경우가 발생합니다. 특히, 새로운 데이터 컬럼을 추가하거나 기존 데이터를 업데이트할 필요가 있을 때 이런 작업을 수행해야 할 때가 생기게 됩니다. 이번엔 MYSQL에서 같은 테이블의 컬럼 값 복사해서 다른 컬럼에 붙여넣는 방법을 쿼리문으로 작성해보도록 할께요.
1. 상황 설명
가령, AAA 테이블이 있고, 여기에는 createdate와 updatedate라는 두 개의 날짜 컬럼이 있습니다.
createdate컬럼에는 데이터가 이미 존재하지만, updatedate 컬럼을 새로 추가하면서 데이터를 채워야 할 일이 생겼습니다.
시나리오는 createdate가 초기에 생성되면 updatedate도 같이 생성된다고 가정했습니다.
근데 조금 사용하다보니 몇몇개의 데이터는 updatedate의 값이 들어가있더라구요.
그래서 MYSQL에서 createdate의 데이터를 updatedate 컬럼으로 복사하고, 값이 있으면 복사하지 않는 업데이트 치기 위한 쿼리가 필요합니다.
2. 단순 복사 쿼리
저는 가장 간단하게 updatedate 컬럼이 비어있는 모든 행(NULL 값인 행)에 대해 createdate 컬럼의 값을 updatedate로 복사했습니다.
UPDATE AAA
SET updatedate = createdate
WHERE updatedate IS NULL;
이 쿼리는 updatedate 컬럼이 NULL인 행에 대해서만 createdate 컬럼의 값을 updatedate 컬럼으로 복사합니다.
이렇게 하면 이미 updatedate 컬럼에 값이 있는 경우에는 해당 행이 NULL이 아니기 때문에 값이 들어가지 않게 된답니다.
3. 고급 조건 설정
조금 더 어려운 조건을 걸어보도록 하겠습니다.
예를 들어, updatedate 컬럼에 특정 조건(createdate보다 오래된 날짜)을 만족하는 값이 있을 경우에만 복사를 하고 싶어요.
MYSQL 데이터를 복사할 때 더 세밀하게 제어하고 싶다면, COALESCE 함수를 사용하거나 IF 문을 사용하여 특정 조건을 만족하는 경우에만 데이터를 복사하도록 할 수 있습니다.
UPDATE AAA
SET updatedate = IF(updatedate < createdate, createdate, updatedate)
WHERE updatedate IS NOT NULL;
결론
MYSQL에서 같은 테이블 내의 다른 컬럼 값 복사 및 붙여넣기는 UPDATE 쿼리를 사용하여 쉽게 수행할 수 있습니다.
이러한 작업은 데이터베이스 내의 데이터 정합성을 유지하고, 데이터 관리의 효율성을 높이는 데 큰 도움이 됩니다.
본문에서 설명한 기본적인 방법과 조금 더 고급 조건 설정을 통해, 데이터베이스 관리자와 개발자는 필요에 따라 다양한 데이터 업데이트 작업을 손쉽게 수행할 수 있습니다.
함께보면 좋은글
'Language > SQL' 카테고리의 다른 글
MYSQL NULL이 아닌 값 반환하는 COALESCE 사용방법 (0) | 2024.04.08 |
---|---|
MySQL에서 문자열 숫자를 숫자로 정렬하기 CAST와 CONVERT 활용법 (0) | 2024.02.28 |
[MySQL] 데이터 이전하는 쿼리 SELECT를 활용한 INSERT (0) | 2023.10.14 |
[mysql] 데이터 검색 결과 다중 데이터 삭제하기 (0) | 2023.10.14 |
[MySQL] JPA group by 구문에서 error (0) | 2023.08.21 |