반응형
아래 테이블이 있고 중복 "refID"가있는 행을 삭제해야하지만 해당 참조가있는 행이 하나 이상 있어야합니다. 즉, 행 4와 5를 제거해야합니다.
+----+-------+--------+--+
| ID | refID | data | |
+----+-------+--------+--+
| 1 | 1023 | aaaaaa | |
| 2 | 1024 | bbbbbb | |
| 3 | 1025 | cccccc | |
| 4 | 1023 | ffffff | |
| 5 | 1023 | gggggg | |
| 6 | 1022 | rrrrrr | |
+----+-------+--------+--+
해결 방법
이것은 Gordon Linoff의 쿼리와 유사하지만 하위 쿼리가 없습니다.
DELETE t1 FROM table t1
JOIN table t2
ON t2.refID = t1.refID
AND t2.ID < t1.ID
이것은 내부 조인을 사용하여 refID는 같지만 ID가 더 낮은 다른 행이있는 행만 삭제합니다.
하위 쿼리를 피할 때의 이점은 검색에 인덱스를 사용할 수 있다는 것입니다. 이 쿼리는 refID + ID에 대한 다중 열 인덱스에서 잘 수행되어야합니다.
참조 페이지 https://stackoverflow.com/questions/28432093
반응형
'MySql' 카테고리의 다른 글
MySQL Symfony 쿼리 오류 : 예상 리터럴, ' "'있음 (0) | 2020.11.24 |
---|---|
MySQL Workbench를 Amazon RDS에 연결하는 방법은 무엇입니까? (0) | 2020.11.24 |
MySQL Adminer로 데이터베이스를 내보내는 방법은 무엇입니까? (0) | 2020.11.24 |
MySQL PHP를 사용한 온라인 예약 시스템 (0) | 2020.11.23 |
MySQL mysql 데이터베이스에서 두 번째 마지막 행을 얻는 방법 (0) | 2020.11.23 |
댓글