2013-05-28 2 views
0

을 통해 내 행을 복제하지만, MySQL은 언젠가 내가 전에 건너 적이없는 내 방식, curball 예상치 못한 통해 yesturday.MySQL은 좋아 난이 엉망 들릴지 알고 밤

그래서 우리는, 내가

Russell 
Russell 
Smith 
Smith 
Smith 
Sam 
Sam 
Sam 

사람이없이이 문제를 해결하는 방법을 알고있는 경우

이 당신이 갑자기

Russell 
Smith 
Sam 

하지만 모두 같은 레코드가 해당 테이블에 직원이라는 데이터베이스 테이블이 전체 테이블을 다운로드하고 수동으로 고정하고 좋을 것 업로드를 다시

+0

그런 일이 왜 확실하지, 이상한! 어쩌면 그것에 대해 귀하의 웹 호스트 이야기! – pattyd

+0

간단한 SQL을 실행하고 있습니까? –

+1

직교 코드로 어제 언젠가 도입 직원 테이블을 포함하는 조인 '테이블 SELECT * FROM'? – Dallas

답변

0

나의 추천 :

(1) 새로운 임시 테이블을 만듭니다

create temporary table xxx as 
    select distinct * from employees 

(2) 원래 테이블

truncate table employees 

(3)에 의해

insert into employees 
    select * from xxx 

다시 레코드를 삽입 잘라 내기 테이블을 자르면 보안, 트리거, 제약 조건과 관련된 거의 모든 정보가 유지됩니다. 한 가지 문제는 자동 증가 기본 키일 수 있습니다. 당신이 그 중 하나가 있다면 이것은 (다시 다음하지만를, 기본 키가있는 경우에는 기록을 복제 할 수 없습니다) 작동하지 않을 수 있습니다.

+0

또한 수동으로 자동 증가 카운터를 해결할 수 있습니다 ('ALTER TABLE MYTABLE AUTO_INCREMENT = 500'). –

1

테이블이 id 열의가 있고 id 가장 낮은 만 기록을 유지하려면 당신이 할 수있는

delete from employees 
where id not in 
(
    select * from 
    (
    select min(id) 
    from employees 
    group by name 
    ) x 
) 
+0

. . 나는 이것에 대해 생각했다. 그러나 행이 중복되면 이드도 복제되지 않습니까? 그렇다면 이것은 효과가 없을 것입니다. –