[SQL] 모든 중복 행을보기
SQL모든 중복 행을보기
나는 SQL 테이블 다음했다고 가정
objid firstname lastname active
1 test test 0
2 test test 1
3 test1 test1 1
4 test2 test2 0
5 test2 test2 0
6 test3 test3 1
다음과 같이 지금, 나는이에 관심이 결과는 다음과 같습니다
objid firstname lastname active
1 test test 0
2 test test 1
4 test2 test2 0
5 test2 test2 0
이걸 어떻게 달성 할 수 있습니까? 나는 다음과 같은 쿼리를 시도,
select firstname,lastname from table
group by firstname,lastname
having count(*) > 1
하지만이 쿼리는 같은 결과를 얻을 수
firstname lastname
test test
test2 test2
해결법
-
==============================
1.당신은 당신의 중복 기록을 발견했습니다하지만 당신은 그들에 부착 된 모든 정보를 얻기에 관심이 있습니다. 당신은 그 정보를 얻을 수 있도록 기본 테이블에 중복 가입 할 필요가있다.
당신은 당신의 중복 기록을 발견했습니다하지만 당신은 그들에 부착 된 모든 정보를 얻기에 관심이 있습니다. 당신은 그 정보를 얻을 수 있도록 기본 테이블에 중복 가입 할 필요가있다.
select * from my_table a join ( select firstname, lastname from my_table group by firstname, lastname having count(*) > 1 ) b on a.firstname = b.firstname and a.lastname = b.lastname
이 내부 조인 수단과 동일하다 같은 firstseen 및 lastseen 조합이 메인 테이블에서 모든 것을 찾을 중복 기록을 발견하여 하위 쿼리의 모든 레코드에 대해.
당신이 그 차이를 테스트해야하지만 당신은 또한에서이 작업을 수행 할 수 있습니다 :
select * from my_table a where ( firstname, lastname ) in ( select firstname, lastname from my_table group by firstname, lastname having count(*) > 1 )
-
==============================
2.여기에 벤의 첫 번째 대답을 할 수있는 좀 더 읽기 쉬운 방법이있다 :
여기에 벤의 첫 번째 대답을 할 수있는 좀 더 읽기 쉬운 방법이있다 :
WITH duplicates AS ( select firstname, lastname from my_table group by firstname, lastname having count(*) > 1 ) SELECT a.* FROM my_table a JOIN duplicates b ON (a.firstname = b.firstname and a.lastname = b.lastname)
-
==============================
3.
SELECT DISTINCT t1.* FROM myTable AS t1 INNER JOIN myTable AS t2 ON t1.firstname = t2.firstname AND t1.lastname = t2.lastname AND t1.objid <> t2.objid
이 출력됩니다 이름 및 성에 내놓고, 중복이있는 모든 행.
-
==============================
4.
SELECT user_name,email_ID FROM User_Master WHERE email_ID in (SELECT email_ID FROM User_Master GROUP BY email_ID HAVING COUNT(*)>1)
-
==============================
5.좋은 옵션은 테이블에서 모든 중복 값을 얻을
좋은 옵션은 테이블에서 모든 중복 값을 얻을
select * from Employee where Name in (select Name from Employee group by Name having COUNT(*)>1)
-
==============================
6.이것은 가장 쉬운 방법입니다 :
이것은 가장 쉬운 방법입니다 :
SELECT * FROM yourtable a WHERE EXISTS (SELECT * FROM yourtable b WHERE a.firstname = b.firstname AND a.secondname = b.secondname AND a.objid <> b.objid)
-
==============================
7.당신은 테이블에서 모든 중복 ID를 인쇄하려면 :
당신은 테이블에서 모든 중복 ID를 인쇄하려면 :
select * from table where id in (select id from table group By id having count(id)>1)
-
==============================
8.나는 창 기능을 사용하여 아무 대답이 없음을 놀라게하고있다. 난 그냥이 사용 사례를 가로 질러 와서이 나를 도왔다.
나는 창 기능을 사용하여 아무 대답이 없음을 놀라게하고있다. 난 그냥이 사용 사례를 가로 질러 와서이 나를 도왔다.
select t.objid, t.firstname, t.lastname, t.active from ( select t.*, count(*) over (partition by firstname, lastname) as cnt from my_table t ) t where t.cnt > 1;
바이올린 - https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=c0cc3b679df63c4d7d632cbb83a9ef13
형식은 같이 간다
select tbl.relevantColumns from ( select t.*, count(*) over (partition by key_columns) as cnt from desiredTable t ) as tbl where tbl.cnt > 1;
당신이 key_columns의 개수> 1 중복 행을 식별하는 데 사용되는 테이블 (때로는 모든 열)에서 필요한 어떤 열이 형식의 선택. key_columns 컬럼의 모든 숫자가 될 수 있습니다.
-
==============================
9.이 답변은 좋은 일하지 않을 수 있습니다,하지만 난 그것을 이해하기 간단하다 생각합니다.
이 답변은 좋은 일하지 않을 수 있습니다,하지만 난 그것을 이해하기 간단하다 생각합니다.
SELECT * FROM table1 WHERE (firstname, lastname) IN ( SELECT firstname, lastname FROM table1 GROUP BY firstname, lastname having count() > 1);
-
==============================
10.이 쿼리 반환 중복
이 쿼리 반환 중복
SELECT * FROM ( SELECT a.* FROM table a WHERE (`firstname`,`lastname`) IN ( SELECT `firstname`,`lastname` FROM table GROUP BY `firstname`,`lastname` HAVING COUNT(*)>1 ) )z WHERE z.`objid` NOT IN ( SELECT MIN(`objid`) FROM table GROUP BY `firstname`,`lastname` HAVING COUNT(*)>1 )
from https://stackoverflow.com/questions/10324107/show-all-duplicated-rows by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 문자열 연결 SQLite는 작동하지 않습니다 (0) | 2020.06.02 |
---|---|
[SQL] PostgreSQL의에서 특정 데이터베이스에 대한 권한을 부여 (0) | 2020.06.02 |
[SQL] LINQ에 의해 중첩 된 그룹 (0) | 2020.06.02 |
[SQL] 나는 Redshift에에 보조금을 보는 방법 (0) | 2020.06.02 |
[SQL] SQL Server의 다른 테이블에 큰 테이블에 데이터를 복사하는 방법 (0) | 2020.06.02 |