Нужно найти дубликаты электронных писем, но с другим именем в одной таблице - PullRequest
0 голосов
/ 12 июня 2019

Здравствуйте. Я пытаюсь выяснить, какие клиенты имеют те же электронные письма, но с другим именем. Почти все, что происходит, происходит от нашего имени, имени, фамилии, оно наполняет имя электронной почты, поэтому выглядит как janedoe-at-yahoo. Так что я смог найти все -at- теперь я хочу сопоставить эти электронные письма с правильным именем Джейн Доу, чтобы я мог исправить все -at- электронные письма. Надеюсь, что все имеет смысл, пожалуйста, помогите.

SELECT C.CUST_NO, C.NAM, C.EMAIL_ADRS_1
FROM AR_CUST C
  INNER JOIN (SELECT NAM, EMAIL_ADRS_1, COUNT(*) AS COUNTOF
                         FROM AR_CUST
                         GROUP BY NAM, EMAIL_ADRS_1
                         HAVING COUNT(*)>1 
                        ) DT ON C.NAM = DT.NAM AND C.EMAIL_ADRS_1 =   DT.EMAIL_ADRS_1 
ORDER BY C.EMAIL_ADRS_1

Этот код выведет только дубликаты писем

SELECT C.CUST_NO, C.NAM, C.FST_NAM, C.LST_NAM, C.EMAIL_ADRS_1
FROM AR_CUST C
  INNER JOIN (SELECT NAM, EMAIL_ADRS_1, COUNT(*) AS COUNTOF
                         FROM AR_CUST
                         GROUP BY NAM, EMAIL_ADRS_1
                         HAVING COUNT(*)>1 AND NAM LIKE '%-at-%'
                        ) DT ON C.EMAIL_ADRS_1 = DT.EMAIL_ADRS_1 
ORDER BY C.EMAIL_ADRS_1

Этот код принесет мне электронные письма и некоторые соответствующие имена, но он принесет мне только 100 записей, когда должно быть не менее 900 записей

1 Ответ

0 голосов
/ 12 июня 2019

Здравствуйте. Я пытаюсь выяснить, какие клиенты имеют те же электронные письма, но с другим именем.

Если вы просто перенаправите адрес электронной почты, который является дубликатом, вы можете ответить на него с агрегацией:

SELECT C.EMAIL_ADRS_1
FROM AR_CUST C
GROUP BY C.EMAIL_ADRS_1
HAVING MIN(C.NAM) <> MAX(C.NAM);

Если вы хотите оригинальные записи, используйте exists:

select c.*
from ar_cust c
where exists (select 1
              from ar_cust c2
              where c2.email_adrs_1 = c.email_adrs_1 and
                    c2.nam <> c.nam
             );
...