안내
본 문서는 블로그의 운영자인 본인이 Stackoverflow에 올린 답변을 정리한 글입니다.
Stackoverflow URL
http://stackoverflow.com/questions/20340110/increment-multiple-timestamp-values/20340892
SQLFiddle URL
http://www.sqlfiddle.com/#!2/ef5cd/1
질문
다음과 같은 테이블과 데이터가 존재한다.
mysql> SELECT * FROM tbl;
+----+---------------------+
| id | t |
+----+---------------------+
| 1 | 2000-01-01 00:00:00 |
| 2 | 2000-01-01 00:00:00 |
| 3 | 2000-01-01 00:00:00 |
| 4 | 2000-01-01 00:00:00 |
| 5 | 2000-01-01 00:00:00 |
+----+---------------------+
5 rows in set (0.00 sec)
첫 번째 레코드에는 1초를 더하고, 두 번째 레코드에는 2초를 더하고, n번째 레코드에는 n초를 더하고 싶다. 쉽게 할 수 있는 방법이 있을까?
답변
다음과 같이 User Variables를 이용하여 쉽게 할 수 있다.
mysql> SET @serial := 0;
Query OK, 0 rows affected (0.00 sec)
mysql> UPDATE tbl SET t = t + INTERVAL (@serial := @serial + 1) SECOND;
Query OK, 5 rows affected (0.00 sec)
Rows matched: 5 Changed: 5 Warnings: 0
mysql> SELECT * FROM tbl;
+----+---------------------+
| id | t |
+----+---------------------+
| 1 | 2000-01-01 00:00:01 |
| 2 | 2000-01-01 00:00:02 |
| 3 | 2000-01-01 00:00:03 |
| 4 | 2000-01-01 00:00:04 |
| 5 | 2000-01-01 00:00:05 |
+----+---------------------+
5 rows in set (0.00 sec)
“MySQL” 카테고리의 추천 글
- MySQL IN subquery 성능. IN sub query는 가급적 사용을 피하자
- MySQL의 IN() v.s. EXISTS v.s. INNER JOIN 성능 비교
- MySQL INNER JOIN v.s EXISTS 성능 비교
- JOIN에서 중복된 레코드 제거하기
- MySQL 중복 레코드 관리 방법 - INSERT IGNORE, REPLACE INTO, ON DUPLICATE UPDATE
- MySQL GROUP BY 성능 최적화를 위한 INDEX 설계
- MySQL Query Cache를 빠르게 비우기
- MySQL Plugin에 대한 간단한 소개
- MySQL InnoDB Index Statistics
- MySQL Foreign key 사용 시 주의 사항 (Can’t create table (errno: 150))