[SQL] MySQL의 중복 된 행 (중복 2 열을 사용하여 검출)
SQLMySQL의 중복 된 행 (중복 2 열을 사용하여 검출)
방법이 설정에서 중복 제거하려면?
id A B
----------------
1 apple 2
2 orange 1
3 apple 2
4 apple 1
여기에서 나는 두 번 발생하는 (2 사과를) 제거 할. ID 번호는 고유합니다. 이 아니었다면 나는 DISTINCT 키워드를 사용합니다. 나는 어떤 방법 열 A와 B의 핵심을 만든 다음 내가 원하는 것을 얻을 그에서 DISTINCT 키워드를 사용할 수 있습니까? 귀하의 답변에 대한 많은 감사합니다.
해결법
-
==============================
1.
delete from myTable where id not in (select min(id) from myTable group by A, B)
즉, 브래킷의 선택은 A와 B 각각에 대한 그룹화 제 ID를 반환한다; 이 세트에 있지 않은 모든 ID를 삭제하면 처음 발생하는 "이후"는 A이다 플러스 B 조합의 모든 발행 수를 제거한다.
편집 : 참조 버그 리포트 :이 구문이 문제가 될 것 같습니다 :
http://bugs.mysql.com/bug.php?id=5037
가능한 해결 방법은이 작업을 수행하는 것입니다 :
delete from myTable where id not in ( select minid from (select min(id) as minid from myTable group by A, B) as newtable )
-
==============================
2.또 다른 (http://labs.creativecommons.org/2010/01/12/removing-duplicate-rows-in-mysql/에서). 삭제 한 후 고유 인덱스를 추가합니다
또 다른 (http://labs.creativecommons.org/2010/01/12/removing-duplicate-rows-in-mysql/에서). 삭제 한 후 고유 인덱스를 추가합니다
ALTER IGNORE TABLE mytable ADD UNIQUE INDEX tmpindex (A,B); ALTER TABLE mytable DROP INDEX tmpindex;
는 키워드가 UNIQUE 그냥 실패 대신 키워드 위반하는 행을 드롭하게 MySQL의 확장 기능입니다 무시합니다.
-
==============================
3.
DELETE FROM fruit_table FT1 WHERE EXISTS ( SELECT * FROM fruit_table FT2 WHERE FT2.fruit_name_column = FT1.fruit_name_column AND FT2.fruit_integer_column = FT1.fruit_integer_column AND FT2.id <> FT1.id )
이것은 당신이 제거되는 중복 레코드의 어떤 상관 없어 가정합니다.
-
==============================
4.
DELETE FROM mytable USING mytable, mytable AS vtable WHERE vtable.id > mytable.id AND mytable.A = vtable.A AND mytable.A = vtable.A
-
==============================
5.당신은 당신이 원하는 데이터를 임시 테이블을 사용할 수 있습니다 :
당신은 당신이 원하는 데이터를 임시 테이블을 사용할 수 있습니다 :
insert into temp_table select min(id), A, B group by A, B
-
==============================
6.나는 정확히 당신이 여기 요구하는지 모르겠어요. 당신이 A와 B 컬럼의 중복을하지 않으려면, 다음 SELECT DISTINCT A, XXX FROM B를 언급 단지 무엇. 어쩌면 당신은 당신이보고 싶습니다 결과의 유형의 예를 게시 할 수 있습니다.
나는 정확히 당신이 여기 요구하는지 모르겠어요. 당신이 A와 B 컬럼의 중복을하지 않으려면, 다음 SELECT DISTINCT A, XXX FROM B를 언급 단지 무엇. 어쩌면 당신은 당신이보고 싶습니다 결과의 유형의 예를 게시 할 수 있습니다.
from https://stackoverflow.com/questions/1799518/mysql-duplicate-rows-duplicate-detected-using-2-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 어떻게 SQL에서 같은 ID로 여러 행을 연결하는? (0) | 2020.05.23 |
---|---|
[SQL] 저장 프로 시저에 데이터 테이블 전달 (0) | 2020.05.23 |
[SQL] 어떻게 SQL 쿼리 결과 집합의 바이트 크기를 얻으려면? (0) | 2020.05.23 |
[SQL] field.types와 RMySQL dbWriteTable (0) | 2020.05.23 |
[SQL] 어떻게 JPA와 최대 절전 모드로 SQL 주입을 방지하기 위해? (0) | 2020.05.23 |