2011-11-03 4 views
4

가져온 데이터 행이 20,000 개인 테이블이 있지만 각 행에 고유 키가 있도록 기본 키를 넣는 것을 잊어 버렸습니다.기본 키를 추가하고 증분 된 ID가있는 기존 행을 모두 업데이트하도록 테이블을 업데이트하는 방법은 무엇입니까?

첫 번째 행을 ID 1에서 시작하여 마지막 행까지 증가시키고 ID 20000에서 끝내기를 원합니다. 모든 행을 단일 쿼리로 어떻게 업데이트합니까?

저는 MySQL을 사용하고 있습니다. PhpMyAdmin을 사용해 보았지만 해내 지 못했습니다. 이것은에 1부터 증가하는 ID 값을 설정

SET @index = 1; 
UPDATE tablename SET ID = (@index:[email protected]+1); 

:

답변

5

실행 새로운 ID 열을 추가 한 후 (아직 기본 키로 설정되어 있지 않으며, 자동 증가가 켜지지 않습니다) 데이터가 이미 입력 된 후 새 기본 키 열을 삽입하려고하면 기존 행 각각이 따라서 발생할 수있는 중복 키 문제를 해결합니다.

일단이 작업을 완료하면 ID 열을 자동 증가로 기본 키로 설정할 수 있습니다.

+0

감사합니다. – zuallauz

+0

놀라워요! 나의 날을 구했다! – n0nag0n

+0

우우. 나는 오라클에게 이것을 지금 필요로한다. 어떤 힌트도 있니? – towi

4

tablename을 변경하고 다음 SQL 문을 실행하십시오. id라는 새 기본 키가 만들어지고 첫 번째 행부터 시작하여 1로 채워집니다.

ALTER TABLE `tablename` ADD COLUMN id INT(10) AUTO_INCREMENT NOT NULL FIRST, ADD PRIMARY KEY (id); 
+0

실제로 작동하는 니스 남자, 감사합니다! – zuallauz

관련 문제