> > 안녕하세요. 데이타베이스는 거의 모르는 초보입니다.
> > 제가 테이블을 하나 생성했는데요. 프라이머리 키를 설정하지 않아 같은 레코드가 여러개 생성되었
> 습
> > 니다. 그래서 프라이머리 키를 뒤늦게 설정하려하니까 중복된 아이디가 있어 설정이 안되거덩요. -_-
> ?
> >
> > 혹시 이 상태에서 프라이머리 키를 설정할 방법은 없을까요?
> >
> > 아니면 중복된 레코드만을 출력하거나 중복된 아이디만 지워줄수 있는 방법이 없을까요?
> > 그러면 프라이머리 키를 설정할 수 있을테니까요. SQL문법을 제대로 사용할 줄 몰라서 어케 해야 하
> 는
> > 지 모르겠걸랑요..-_-?
> > 아시는분 제발 알려주세요~~~~~~~~ (--) (__) (--) 꾸벅~~~
>
> 안녕하세요 목동입니다 ..
> 저도 아래에 모르는 것이 있어서 망가지고 있는데.. 아직 정확한 해답을 못찾았네요..
> 흑흑...
>
> 중복된 아이디를 지워주는 방법입니다(중복된 레코드는 아마 없겠죠?)
> use 데이터베이스명;
> delete * from AAA where id='지울 ID';
> 일케 하시면 테이블 명 AAA에서 id가 '지울 ID'로 설정된 모든 레코드셋은 지워집니다.
> 한가지 주의 하실점은 Mysql은 Rollback 기능이 없어서 일단 지운다음에는 복구가
> 어렵습니다.. 심사 숙고 하세요..
일단 프라이머리 키로 지정될 attribute 는 유일해야 합니다. 그런데 같은 내용을 가진 row 가 있다면 이것은 primary key 로서 사용할 수 없습니다. primary key 는 유일한 것으로 바꾸어야 합니다.
만약 잘못하여 같은 내용의 row 가 여러가 들어가 있다면 나머지는 지울수 밖에 없습니다. 이런 작업은 사실 좀 복잡할 소지가 있습니다. (만약 select .... into ... 구문이 지원되는 상황이라면 간단하게 해결되겠지요. MySQL 의 경우 3.23 개발버전 부터 이러한 구문을 지원하는 것으로 알고 있습니다)
select distinct * from table_name into new_table_name;
drop table_name;
이렇게 하고 나면 new_table_name 내에는 중복되는 모든 항목들은 배제되고 하나의 자료들만 남아 있게 될 것입니다.
도움이 되셨길 바랍니다.
|