Мне нужно выполнить оператор выбора, который возвращает все строки, где значение столбца не отличается (например, EmailAddress).
Например, если таблица выглядит следующим образом:
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
sql
sql-server
sql-server-2008
Кузнечик
источник
источник
HAVING
здесь вместо второгоSELECT...WHERE
приводит к тому, что это будет один запрос вместо второго параметра, который выполняет этот второйSELECT...WHERE
вызов много раз. Смотрите больше здесь: stackoverflow.com/q/9253244/550975[EmailAddress] must appear in the GROUP BY clause or be used in an aggregate function
ошибку. Единственное исправление - редактированиеsql_mode
?[EmailAddress]
ВGROUP BY
статьеЧто неверно в вашем запросе, так это то, что вы группируете по электронной почте и имени, что формирует группу из каждого уникального набора электронной почты и имени, объединенных вместе и, следовательно,
рассматриваются как 3 разные группы, а скорее все принадлежат к одной группе.
Пожалуйста, используйте запрос, как указано ниже:
источник
Как насчет
источник
источник
Просто для удовольствия, вот еще один способ:
источник
Вместо того, чтобы использовать подзапросы, где условие, которое увеличит время запроса, когда записи огромны.
Я бы предложил использовать Inner Join как лучший вариант решения этой проблемы.
Учитывая ту же таблицу, это может дать результат
Для еще лучших результатов я бы предложил вам использовать
CustomerID
любое другое поле вашей таблицы. ДублированиеCustomerName
возможно.источник
Ну, есть небольшое изменение, чтобы найти не четкие строки ..
источник