좀 답답한 과제가 걸렸다.
7만개에 가까운 데이터중 6만3천개 가량이 중요한 필드 데이터가 누락되어 올려진 것이다.
엑셀로 가공한 파일을 DB에 업로드 하는 과정에서 수작업한 엑셀 데이터에서 이 필드의 데이터가 공백으로 채워진것이다. 이 필드의 데이터는 해당 데이터가 작성되는 과정에서 특정 문자열과 time() 값을 조합해서 만들어지는 일종의 고유코드였던것이다.
이것이 누락된 데이터들이 기존 데이터와 섞이면서 End-user 포인트에서 DB를 수정하기만 하면 DB가 꼬여버리는 것이다.(3만여개의 중복 데이터를 만들어낸다ㅡㅡ;)

고심 끝에 해당 필드('code')가 공백이 아닌 데이터들 중 가장 작은 번호를 참고하여 밑으로 6만여개의 번호가 채워지도록 작업을 했다.

일단 code 라는 필드에 들어갈 데이터는 Nice1187029190 과 같은 문자열 "Nice" 와 time() 함수의 결과값의 조합니다. 최초로 입력된 데이터의 값이 Nice1187029190 이었으므로 나머지 공백 데이터들은 1187029190 보다 작으면서 순차적으로 작아져야한다. 그래서 다음과 같이 콘솔에서 @NTITLE 과 @CNT 라는 두개의 변수를 만들고 이 변수들을 CONCAT() 함수를 써서 붙인후 code 필드에 넣어주었다. @CNT 변수의 값은 쿼리를 거듭할수록 하나씩 작아지도록 했다.
mysql> set @NTITLE:="Nice";
Query OK, 0 rows affected (0.00 sec)

mysql> set @CNT:=1187029190;
Query OK, 0 rows affected (0.00 sec)

mysql> select @NTITLE;
+---------+
| @NTITLE |
+---------+
| Nice    |
+---------+
1 row in set (0.28 sec)

mysql> select @CNT;
+------------+
| @CNT       |
+------------+
| 1187029190 |
+------------+
1 row in set (0.00 sec)

mysql> UPDATE 테이블명 SET code=CONCAT(@NTITLE, (@CNT:=@CNT-1)) WHERE code='';
Query OK, 63860 rows affected (1.85 sec)
일치하는 Rows : 63860개 변경됨 : 63860개  경고: 0개