2014-09-26 15 views
0

데이터베이스 테이블에 너무 많은 레코드 중복이 있습니다. 내가 뭘 원하는 건 자바에서 쿼리를 사용하여 복제를 제거하는 것입니다. 내가 어떻게 할 수 있니?.자바에서 쿼리를 사용하여 MySQL 데이터베이스 테이블에서 중복 레코드를 제거하는 방법은 무엇입니까?

+0

지금까지 무엇을 가지고 계셨습니까? 표시 할 코드가 있습니까? 어떤 테이블? 기록이 복제본임을 어떻게 결정합니까? – dic19

+0

왜 자바인가? 이것은 일반적인 데이터베이스 유지 보수입니다. DBMS 도구를 사용하고 응용 프로그램을 재구성하여 처음부터 중복 데이터가 유입되지 않도록하십시오. – Gimby

+0

왜 데이터베이스에 검색어가 없습니까? – shinjw

답변

0
Create schema TestDB; 

CREATE TABLE EMPLOYEE 
(
    ID INT, 
    NAME Varchar(100), 
    DEPARTMENT INT, 
    EMAIL Varchar(100) 
); 

INSERT INTO EMPLOYEE VALUES (1,'Anish',101,'[email protected]'); 
INSERT INTO EMPLOYEE VALUES (2,'Lokesh',102,'[email protected]'); 
INSERT INTO EMPLOYEE VALUES (3,'Rakesh',103,'[email protected]'); 
INSERT INTO EMPLOYEE VALUES (4,'Yogesh',104,'[email protected]'); 

--These are the duplicate rows 

INSERT INTO EMPLOYEE VALUES (5,'Anish',101,'[email protected]'); 
INSERT INTO EMPLOYEE VALUES (6,'Lokesh',102,'[email protected]'); 

해결책 : 이름 필드가 중복 이름이 고유 ID 필드가 가장 낮은입니다 만의 고유 행이 유지 될 위치를 SQL 쿼리 위

DELETE e1 FROM EMPLOYEE e1, EMPLOYEE e2 WHERE e1.name = e2.name AND e1.id > e2.id; 

행을 삭제합니다. 예를 들어 ID가 5와 6 인 행은 삭제되고 1과 2가있는 행은 유지됩니다.

+0

덕분에 잘 작동합니다. –

0

중복을 제거하려면 @ Kanan의 쿼리를 사용할 수 있습니다. 이것을 수행하기 위해 java는 다음 코드를 사용합니다.

try 
{ 
Statement st = connection.createStatement(); 

String query = "DELETE t1 FROM table t1, table t2 WHERE t1.name = t2.name AND t1.id > t2.id;" 

st.executeUpdate(); 
} 
catch(Exception e) 
{ 
     e.printStackTrace(); 
}