Специфическая проблема синтаксиса T-SQL (простой, без сомнения) - PullRequest
0 голосов
/ 23 апреля 2010

У меня проблема с запросом, который я пытаюсь выполнить для некоторых данных. Думаю, для начала нужно описать данные.

Хорошо, у меня есть список адресов электронной почты, каждый адрес электронной почты имеет уникальный идентификатор и идентификатор учетной записи

Также в моих таблицах есть установленное число, которое автоматически увеличивается, это позволит мне настроить таргетинг на дублирующиеся адреса электронной почты

Что мне нужно сделать, это что-то вроде этого.

Insert into duplicates
   (EMAIL,ACCOUNTID,ID)

SELECT Email,AccountID,ID
   FROM EmailAddresses

Group by Email,AccountID
   Having Count(email)>1
Order by AccountID, Email

Поэтому я хочу выбрать все дубликаты адресов электронной почты и вставить их (и их относительные поля) в новую таблицу с разбивкой по идентификатору учетной записи, чтобы я мог выполнить дополнительные запросы к ней.

Я боролся с этим слишком долго и мог бы просто использовать новую перспективу.

Приветствия заранее

Ответы [ 3 ]

1 голос
/ 23 апреля 2010
SELECT Email, AccountID, ID INTO duplicates
FROM EmailAddresses E
WHERE (SELECT COUNT(*) FROM EmailAddresses E1 WHERE E1.Email = E.Email) > 1
GROUP BY Email, AccountID, ID;
1 голос
/ 23 апреля 2010

Убедитесь, что поле идентификатора в таблице дубликатов НЕ является полем идентификации, и удалите заказ по предложению.

Insert into duplicates 
(EMAIL,ACCOUNTID,ID) 
SELECT Email,AccountID, MIN(ID)
FROM EmailAddresses 
Group by Email,AccountID 
Having Count(email)>1

Если вы хотите, чтобы все дублирующиеся записи использовались, выберите вариант, предложенный queen3

1 голос
/ 23 апреля 2010
SELECT *
FROM EmailAddresses e1 INNER JOIN 
   (SELECT Email, AccountId
   FROM EmailAddresses
   GROUP BY Email, AccountID
   HAVING Count(Id)>1) Dups 
      ON Dups.Email = e1.Email AND Dups.AccountId = e1.AccountId
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...