여러 열을 사용한 중복에 대한 MySQL 선택 레코드 선택
테이블에서 레코드를 선택하거나 데이터베이스의 다른 레코드와 여러 열이 동일한 새 빈 테이블에 레코드를 삽입하고 싶습니다.이 질문과 유사한 문제.MySQL에서 중복된 레코드를 찾습니다. 단, 하나의 열만 비교합니다.또한 아래 예제의 C열 중 하나는 정수입니다.위 링크의 질문처럼 각 행을 반환해 주셨으면 합니다.불행하게도 나는 아직 나 스스로 이것을 알아내기 위해 어떻게 참여하는지 충분히 알지 못한다.아래 코드는 실제 SQL 코드 요구와 전혀 유사하지 않다는 것을 알고 있습니다.이것이 제가 얻고자 하는 비교를 설명하는 가장 명확한 방법입니다.
SELECT ColumnE, ColumnA, ColumnB, ColumnC from table where (
Row1.ColumnA = Row2.ColumnA &&
Row1.ColumnB = Row2.ColumnB &&
Row1.ColumnC = Row2.ColumnC
)
어떤 도움이라도 주시면 감사하겠습니다.제가 본 "Select duplicates from MYSQL" 질문은 모두 비교 대상으로 한 컬럼만 사용합니다.
여러 열 사이의 중복을 카운트하려면 다음과 같이 하십시오.group by
:
select ColumnA, ColumnB, ColumnC, count(*) as NumDuplicates
from table
group by ColumnA, ColumnB, ColumnC
중복된 값만 원하는 경우 카운트는 1보다 커집니다.이 값은 다음 명령어를 사용하여 얻을 수 있습니다.having
절:
select ColumnA, ColumnB, ColumnC, count(*) as NumDuplicates
from table
group by ColumnA, ColumnB, ColumnC
having NumDuplicates > 1
모든 중복 행을 반환하려면 마지막 쿼리를 원래 데이터에 다시 결합합니다.
select t.*
from table t join
(select ColumnA, ColumnB, ColumnC, count(*) as NumDuplicates
from table
group by ColumnA, ColumnB, ColumnC
having NumDuplicates > 1
) tsum
on t.ColumnA = tsum.ColumnA and t.ColumnB = tsum.ColumnB and t.ColumnC = tsum.ColumnC
모든 열 값이 NULL이 아닌 경우 다음과 같이 하십시오.
on (t.ColumnA = tsum.ColumnA or t.ColumnA is null and tsum.ColumnA is null) and
(t.ColumnB = tsum.ColumnB or t.ColumnB is null and tsum.ColumnB is null) and
(t.ColumnC = tsum.ColumnC or t.ColumnC is null and tsum.ColumnC is null)
편집:
가지고 계신 경우NULL
값도 사용할 수도 있습니다.NULL
- 안전 작업자:
on t.ColumnA <=> tsum.ColumnA and
t.ColumnB <=> tsum.ColumnB and
t.ColumnC <=> tsum.ColumnC
유니언을 쓰거나 임시 테이블을 만들어보는 건 어때요?하지만 개인적으로는 임시 테이블을 만드는 것보다 유니언을 사용하는 것이 좋습니다. 그렇게 하는 데 시간이 오래 걸리므로 다음을 시도해 보십시오.
select field1, field2 from(
select '' as field2, field1, count(field1) as cnt FROM list GROUP BY field2 HAVING cnt > 1
union
select ''as field1, field2, cound(field2) as cnt from list group by field1 having cnt > 1
)
이게 말이 됐으면 좋겠어요:)
언급URL : https://stackoverflow.com/questions/16324328/mysql-select-records-for-duplicates-using-multiple-columns
'programing' 카테고리의 다른 글
이전 인증을 사용하여 MySQL 4.1+에 연결할 수 없음 (0) | 2022.11.08 |
---|---|
HTML 폼의 디폴트 송신 버튼은 어떻게 결정됩니까? (0) | 2022.11.08 |
MySQL select 문에 조건문을 작성하려면 어떻게 해야 합니까? (0) | 2022.11.08 |
MYSQL phmyadmin 사용자 계정 업데이트/추가 오류 (0) | 2022.11.08 |
클릭하우스, 고속 가입을 위한 엔진 (0) | 2022.11.08 |