search:

MySQL UPDATE - 첫 번째 레코드는 +1, 두 번째 레코드는 +2

05 Mar 2014

안내

본 문서는 블로그의 운영자인 본인이 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” 카테고리의 추천 글