반응형
열 값이 고유하지 않은 모든 행을 선택하는 방법
열 값이 고유하지 않은 모든 행(예: 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
이것은, 이 네트워크보다 큰폭으로 고속입니다.EXISTS
방법:
SELECT [EmailAddress], [CustomerName] FROM [Customers] WHERE [EmailAddress] IN
(SELECT [EmailAddress] FROM [Customers] GROUP BY [EmailAddress] HAVING COUNT(*) > 1)
쿼리에서 잘못된 점은 이메일과 이름으로 그룹화하고 있다는 것입니다.이 그룹은 이메일과 이름이 조합된 각각의 고유한 이메일 집합과 이름 집합을 형성되어 있습니다.
aaron and aaron@gmail.com
christy and aaron@gmail.com
john and aaron@gmail.com
3개의 다른 그룹으로 취급되며, 모두 1개의 단일 그룹에 속합니다.
아래 표시된 대로 쿼리를 사용하십시오.
select emailaddress,customername from customers where emailaddress in
(select emailaddress from customers group by emailaddress having count(*) > 1)
select CustomerName,count(1) from Customers group by CustomerName having count(1) > 1
어때.
SELECT EmailAddress, CustomerName FROM Customers a
WHERE Exists ( SELECT emailAddress FROM customers c WHERE a.customerName != c.customerName AND a.EmailAddress = c.EmailAddress)
재미삼아 또 다른 방법이 있습니다.
;with counts as (
select CustomerName, EmailAddress,
count(*) over (partition by EmailAddress) as num
from Customers
)
select CustomerName, EmailAddress
from counts
where num > 1
레코드가 큰 경우 쿼리 시간이 길어지는 서브 쿼리를 사용하는 것이 아닙니다.
이 문제에 대한 더 나은 옵션으로 이너 조인을 사용할 것을 제안합니다.
같은 표를 고려했을 때 결과를 얻을 수 있다.
SELECT EmailAddress, CustomerName FROM Customers as a
Inner Join Customers as b on a.CustomerName <> b.CustomerName and a.EmailAddress = b.EmailAddress
더 나은 결과를 얻으려면CustomerID
또는 테이블의 고유한 필드입니다.의 복제CustomerName
가능합니다.
SELECT Title, Id
FROM dbo.TblNews
WHERE (Title IN
(SELECT Title
FROM dbo.TblNews AS TblNews_1
GROUP BY Title
HAVING (COUNT(*) > 1)))
ORDER BY Title
- 제목으로 정렬하다
언급URL : https://stackoverflow.com/questions/13146304/how-to-select-every-row-where-column-value-is-not-distinct
반응형
'programing' 카테고리의 다른 글
데이터베이스를 연결할 때 액세스가 거부되었습니다. (0) | 2023.04.07 |
---|---|
SQL Server를 기존 테이블로 선택 (0) | 2023.04.07 |
SQL Server: SQL 쿼리를 사용하여 테이블 기본 키 가져오기 (0) | 2023.04.07 |
[ SQL Server Table ]컬럼의 문자열을 치환하는 방법 (0) | 2023.04.07 |
SQL Server Management Studio에서 기억된 로그인 및 암호 목록 제거 (0) | 2023.04.07 |