【发布时间】:2018-01-15 20:34:32
【问题描述】:
我有两张桌子:
-
Contact(列是:ContactId、FirstName、LastName、EmailAddress) -
Address(列是:ContactId、AddressLine1、City、CountryCode)
一些EmailAddresses 有多个ContactId、FirstName、LastName 和AddressLine1
我正在尝试获取 DISTINCT 电子邮件地址的列表以及与该电子邮件地址相关的任何名称/详细信息。
我还在尝试按域名对所有电子邮件地址进行排序(例如,所有 gmail.com 一起,所有 Hotmail.com 一起等等)
到目前为止我的代码:
SELECT DISTINCT(EmailAddress),
FirstName,
LastName,
AD.AddressLine1, AD.City, AD.CountryCode
FROM
[Contact] C
INNER JOIN
Address AD ON C.ContactId = AD.ContactId
WHERE
(set of conditions)
-------Code works fine until here but sorting by domain name doesn't work---
ORDER BY
SUBSTRING(EMailAddress,(CHARINDEX('@', EMailAddress) + 1), 1)
我得到的错误信息是:
如果指定了 SELECT DISTINCT,则 ORDER BY 项目必须出现在选择列表中。
【问题讨论】:
-
嗯,它 看起来 就像您试图仅将
DISTINCT应用于电子邮件地址,但这不是它的工作原理(它适用于 所有列)。你真的有可能在这里精确复制吗?两个不同的联系人 ID 真的可以有相同的电子邮件地址吗?和同一个地址?您是否尝试过简单地删除DISTINCT,这样您就可以按不在选择列表中的内容进行排序?
标签: sql sql-server distinct