[SQL] 어떻게 여러 열에서 중복을 찾을 수 있습니까?
SQL어떻게 여러 열에서 중복을 찾을 수 있습니까?
그래서 나는이 SQL 코드를 아래와 같이 뭔가를 원하는 :
select s.id, s.name,s.city
from stuff s
group by s.name having count(where city and name are identical) > 1
다음을 생산하는 (하지만 이름이나 유일한 도시 일치, 그것은 모두 열에 있어야한다 곳에 무시)하려면 :
id name city
904834 jim London
904835 jim London
90145 Fred Paris
90132 Fred Paris
90133 Fred Paris
해결법
-
==============================
1.쌍의 이름과 도시에 대한 중복 ID :
쌍의 이름과 도시에 대한 중복 ID :
select s.id, t.* from [stuff] s join ( select name, city, count(*) as qty from [stuff] group by name, city having count(*) > 1 ) t on s.name = t.name and s.city = t.city
-
==============================
2.
SELECT name, city, count(*) as qty FROM stuff GROUP BY name, city HAVING count(*)> 1
-
==============================
3.이런 식으로 뭔가 트릭을 할 것입니다. 그래서 몇 가지 검사를해야합니까, 성능에 대해 알고하지 마십시오.
이런 식으로 뭔가 트릭을 할 것입니다. 그래서 몇 가지 검사를해야합니까, 성능에 대해 알고하지 마십시오.
select id, name, city from [stuff] s where 1 < (select count(*) from [stuff] i where i.city = s.city and i.name = s.name)
-
==============================
4.수를 사용 (*) 이상 (기준 ... 파티션)도 영향을받는 모든 행과 모든 원하는 열을 나열하면서, 불필요한 반복을 찾을 간단하고 효율적인 방법을 제공합니다 :
수를 사용 (*) 이상 (기준 ... 파티션)도 영향을받는 모든 행과 모든 원하는 열을 나열하면서, 불필요한 반복을 찾을 간단하고 효율적인 방법을 제공합니다 :
SELECT t.* FROM ( SELECT s.* , COUNT(*) OVER (PARTITION BY s.name, s.city) AS qty FROM stuff s ) t WHERE t.qty > 1 ORDER BY t.name, t.city
가장 최근의 RDBMS 버전 (*) 이상 (기준 ... 파티션) 수를 지원하는 동안 아래와 같이 MySQL의 V 8.0, "윈도우 함수"를 도입 (MySQL은 8.0)
DB <> 바이올린 여기
-
==============================
5.자기 물건과 일치하는 이름과 도시에 가입하는 방법은 있습니다. 계산에 의해 다음 그룹.
자기 물건과 일치하는 이름과 도시에 가입하는 방법은 있습니다. 계산에 의해 다음 그룹.
select s.id, s.name, s.city from stuff s join stuff p ON ( s.name = p.city OR s.city = p.name ) group by s.name having count(s.name) > 1
-
==============================
6.늦은이 게시물에 게임에 작은, 그러나 나는 효율적인 / 꽤 유연하게이 방법을 발견
늦은이 게시물에 게임에 작은, 그러나 나는 효율적인 / 꽤 유연하게이 방법을 발견
select s1.id ,s1.name ,s1.city from stuff s1 ,stuff s2 Where s1.id <> s2.id and s1.name = s2.name and s1.city = s2.city
-
==============================
7.(70 개) 컬럼 만 4 나타내는 중복으로 준비 테이블을 감안할 때, 이 코드는 기분을 상하게 열을 반환합니다 :
(70 개) 컬럼 만 4 나타내는 중복으로 준비 테이블을 감안할 때, 이 코드는 기분을 상하게 열을 반환합니다 :
SELECT COUNT(*) ,LTRIM(RTRIM(S.TransactionDate)) ,LTRIM(RTRIM(S.TransactionTime)) ,LTRIM(RTRIM(S.TransactionTicketNumber)) ,LTRIM(RTRIM(GrossCost)) FROM Staging.dbo.Stage S GROUP BY LTRIM(RTRIM(S.TransactionDate)) ,LTRIM(RTRIM(S.TransactionTime)) ,LTRIM(RTRIM(S.TransactionTicketNumber)) ,LTRIM(RTRIM(GrossCost)) HAVING COUNT(*) > 1
.
from https://stackoverflow.com/questions/8149210/how-do-i-find-duplicates-across-multiple-columns by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 주석 @Id 및 @GeneratedValue (전략 = GenerationType.IDENTITY)의 사용은 무엇인가? 왜 generationtype 정체성은 무엇입니까? (0) | 2020.04.09 |
---|---|
[SQL] 두 열의 조합에 고유 제한 조건을 추가 (0) | 2020.04.09 |
[SQL] 어떻게 현재의 트랜잭션 (transaction) 레벨을 찾는 방법은? (0) | 2020.04.09 |
[SQL] 참조 별칭은 WHERE 절에서 (SELECT에서 계산) (0) | 2020.04.09 |
[SQL] 어떻게 PowerShell을에서 SQL Server 쿼리를 실행합니까? (0) | 2020.04.09 |