[SQL] 어떻게 선택 모든 행에 열 값이 고유없는 경우에는
SQL어떻게 선택 모든 행에 열 값이 고유없는 경우에는
나는 열 값이 구별없는 모든 행 (예를 들어, EmailAddress를)을 반환하는 SELECT 문을 실행해야합니다.
예를 들어, 테이블 모양은 다음과 같은 경우 :
CustomerName EmailAddress
Aaron aaron@gmail.com
Christy aaron@gmail.com
Jason jason@gmail.com
Eric eric@gmail.com
John aaron@gmail.com
나는 복귀에 대한 질의를 필요로한다 :
Aaron aaron@gmail.com
Christy aaron@gmail.com
John aaron@gmail.com
나는 많은 글을 읽고 아무 소용이 다른 쿼리를 시도했습니다. 내가 일을한다고 생각하는 질의는 다음과 같습니다. 누군가가 대안을 제안 또는 내 쿼리 문제가 될 수 있습니다 무엇을 말해 줄 수 있습니까?
select EmailAddress, CustomerName from Customers
group by EmailAddress, CustomerName
having COUNT(distinct(EmailAddress)) > 1
해결법
-
==============================
1.이것은이 방법 EXISTS보다 훨씬 빠르다 :
이것은이 방법 EXISTS보다 훨씬 빠르다 :
SELECT [EmailAddress], [CustomerName] FROM [Customers] WHERE [EmailAddress] IN (SELECT [EmailAddress] FROM [Customers] GROUP BY [EmailAddress] HAVING COUNT(*) > 1)
-
==============================
2.귀하의 요청에 잘못된 것은 당신이 이메일과 이름으로 그룹화되어 이메일과 이름의 각각의 고유 한 세트의 그룹이 함께 따라서 결합 된 형태 있다는 점이다
귀하의 요청에 잘못된 것은 당신이 이메일과 이름으로 그룹화되어 이메일과 이름의 각각의 고유 한 세트의 그룹이 함께 따라서 결합 된 형태 있다는 점이다
aaron and aaron@gmail.com christy and aaron@gmail.com john and aaron@gmail.com
오히려 모든 단일 1 개 그룹에 속하는 3 개 개의 그룹으로 취급된다.
아래에 주어진 쿼리를 사용하십시오 :
select emailaddress,customername from customers where emailaddress in (select emailaddress from customers group by emailaddress having count(*) > 1)
-
==============================
3.방법에 대한
방법에 대한
SELECT EmailAddress, CustomerName FROM Customers a WHERE Exists ( SELECT emailAddress FROM customers c WHERE a.customerName != c.customerName AND a.EmailAddress = c.EmailAddress)
-
==============================
4.
select CustomerName,count(1) from Customers group by CustomerName having count(1) > 1
-
==============================
5.그냥 재미를 위해, 여기 또 다른 방법이있다 :
그냥 재미를 위해, 여기 또 다른 방법이있다 :
;with counts as ( select CustomerName, EmailAddress, count(*) over (partition by EmailAddress) as num from Customers ) select CustomerName, EmailAddress from counts where num > 1
-
==============================
6.오히려 기록이 거대 쿼리 시간을 증가 곳 조건에 서브 쿼리를 사용하는 것보다.
오히려 기록이 거대 쿼리 시간을 증가 곳 조건에 서브 쿼리를 사용하는 것보다.
나는 내부가이 문제에 대한 더 나은 옵션으로 참가를 사용하는 것이 좋습니다 것입니다.
같은 테이블을 고려하면이 결과를 줄 수
SELECT EmailAddress, CustomerName FROM Customers as a Inner Join Customers as b on a.CustomerName <> b.CustomerName and a.EmailAddress = b.EmailAddress
여전히 더 나은 결과를 위해 나는 당신의 CustomerID 또는 테이블의 고유 필드를 사용하는 것이 좋습니다 것입니다. CUSTOMERNAME의 중복이 가능합니다.
-
==============================
7.음이 아닌 별개의 행을 찾을 수있는 약간의 변화가 ..
음이 아닌 별개의 행을 찾을 수있는 약간의 변화가 ..
SELECT EmailAddress, CustomerName FROM Customers WHERE EmailAddress NOT IN (SELECT EmailAddress FROM Customers GROUP BY EmailAddress HAVING COUNT(*) > 1)
from https://stackoverflow.com/questions/13146304/how-to-select-every-row-where-column-value-is-not-distinct by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의에서 열 이름 바꾸기 (0) | 2020.05.30 |
---|---|
[SQL] 특정 열 이름을 가진 테이블에 대한 Oracle 데이터베이스를 검색? (0) | 2020.05.30 |
[SQL] 어떻게 증가없이 오라클 시퀀스의 현재 값을 검색하는? (0) | 2020.05.30 |
[SQL] FULL의 차이는 가입 및 INNER는 가입 (0) | 2020.05.30 |
[SQL] 어떻게 SQL Server의 소수점 값을 저장하는 방법? (0) | 2020.05.30 |