테이블에는 ID, 이름 및 개수라는 세 개의 열이 있습니다. 이름 열의 수가 많으면 (초기에 UNIQUE가 부족하기 때문에)이 문제를 해결하고 싶습니다. 그러나 ID 열은 다른 (4 또는 5, 나는 생각한다 - 나는 문서를 점검해야한다) 테이블을 사용하여 이름을 찾고 그냥 제거하면 테이블이 손상 될 수있다. "모든 동일한 레코드를 찾아서 함께 병합하십시오"라고 말하는 좋은 방법이 있습니까?MySQL에서 중복 된 항목을 정리하는 깨끗한 방법이 있습니까?
2
A
답변
4
이런 종류의 질문이 수시로 등장과 같은 일을 할 수 없습니다. 아니, 할 수있는 정말 깨끗한 방법이 없습니다. 상위 테이블의 원하지 않는 값을 사용하는 하위 테이블의 모든 행을 변경해야 상위 테이블에서 원하지 않는 행을 제거 할 수 있습니다.
MySQL은 다중 테이블 UPDATE
및 DELETE
문을 지원하기 추천하고 그래서 당신이 할 수있는 꽤 깔끔한 트릭 (데이터베이스의 다른 브랜드와는 달리) 다음
UPDATE names n1
JOIN names n2 ON (n1.id < n2.id AND n1.name = n2.name)
JOIN child_table c ON (n2.id = c.id)
SET c.name_id = n1.id
ORDER BY n1.id DESC;
은 모든 자식 테이블에 이런 짓을하면 (s)를 사용하면 MySQL의 다중 테이블 DELETE
구문을 사용하여 상위 테이블에서 불필요한 행을 제거 할 수 있습니다.
DELETE FROM n2
USING names n1 JOIN names n2 ON (n1.id < n2.id AND n1.name = n2.name);
0
왜
update dependent_table set name_id = <id you want to keep> where name_id in (
select id from names where name = 'foo' and id != <id you want to keep>)
관련 문제
- 1. mysql에서 중복 문자열 항목을 쿼리하는 방법
- 2. 중복 된 항목을 방지하는 방법
- 3. iOS - HTML 코드를 정리하는 좋은 방법이 있습니까?
- 4. 이 컨트롤러 코드를 정리하는 방법이 있습니까?
- 5. 테이블 피벗/매핑에서 중복 항목을 방지하는 방법이 있습니까?
- 6. 테이블 변수 : 더 깨끗한 방법이 있습니까?
- 7. MySQL에서 중복 된 등록을 피하는 방법
- 8. MySQL에서 오라클을 연결하는 방법이 있습니까
- 9. 중첩 된 반복에서 중복 항목을 피하는 방법
- 10. GoogleAppEngine 모델에서 중복 된 항목을 삭제 하시겠습니까?
- 11. 중복 된 항목을 방지하는 방법은 무엇입니까?
- 12. PHP가 배열의 중복 된 항목을 확인합니다.
- 13. add_post_meta가 중복 된 항목을 만드는 이유
- 14. JSP에서 스프링 빈을 자동으로 정리하는 가장 깨끗한 방법은 무엇입니까?
- 15. mysql에서 항목을 선택
- 16. 깨끗한 URL 만들기 및 중복 관리
- 17. 키 기본 mysql에서 중복 항목
- 18. .net에서 깨끗한 사용자 HTML
- 19. PHP/MySQL에서 중복 행 삽입을 방지
- 20. MySQL에서 별도의 스레드에서 트리거를 실행하는 방법이 있습니까?
- 21. MySQL에서 IN과 LIKE를 결합하는 방법이 있습니까?
- 22. 날짜 필드를 늘리려고하면 MySQL에서 중복 된 항목 오류가 발생합니까?
- 23. Visual Studio 웹 프로젝트에서 중복 된 항목을 제거하는 방법은 무엇입니까?
- 24. 유물 저장소의 수은 저장소를 정리하는 쉬운 방법이 있습니까?
- 25. 데이터베이스에 중복 항목을 나열하는 방법
- 26. 생성 된 ID로 중복 항목을 방지하는 방법 최대 절전 모드
- 27. ms 엔진이 기존 항목을 찾거나 중복 항목을 제거합니다.
- 28. HAML에서 마크 다운 출력을 사용하는 더 깨끗한 방법이 있습니까?
- 29. 이 일반 배열을 초기화하는 더 깨끗한 방법이 있습니까?
- 30. Groovy에서 MongoDB에서이 그룹 쿼리를 수행하는 더 깨끗한 방법이 있습니까?