【发布时间】:2017-04-26 15:12:34
【问题描述】:
仍在学习 SQL,当电子邮件与多个帐户相关联时,我无法创建一个返回电子邮件地址和帐户 ID 列表的查询。
服务器是 Oracle SQL,我正在处理一个表“EMAIL”和两个字段“UID 和“EMAIL_ADDRESS”。
我只想在同一电子邮件列在多个帐户 ID 上时包含电子邮件和帐号。帐户 ID 可以有多个电子邮件,并且同一电子邮件可以在同一个帐户 ID 上多次列出。那没问题。所以,我想排除那些结果,这是我遇到麻烦的地方。
我有一个查询,当电子邮件与多个帐户相关联时,该查询当前返回与其相关联的帐户 ID 的数量。但是,我无法将其转换为可以查看帐号 ID 号的列表。
我当前使用的查询是
SELECT COUNT(EMAIL.UID), EMAIL.EMAIL_ADDRESS
FROM EMAIL
GROUP BY EMAIL.EMAIL_ADDRESS
HAVING COUNT(DISTINCT EMAIL.UID) > 1
这会返回一个类似的列表:
Count of UID EMAIL_ADDRESS
2 asmith@...
3 bjones@...
5 cbaker@...
我需要的是:
UID EMAIL_ADDRESS
67890 asmith@...
75236 asmith@...
15689 bjones@...
56748 bjones@...
89523 bjones@...
98542 cbaker@...
00245 cbaker@...
etc, etc etc, etc
我还需要按电子邮件地址排序,以便将相同的电子邮件一起列出。
感谢任何帮助!
谢谢, 迈克
【问题讨论】:
-
将您当前的查询放在子查询中。使用该子查询连接表。
-
你没那么远。获得电子邮件列表后,您只需获取电子邮件地址为
IN ( yourSelect)的所有行。或者,您可以将查询用作子查询并加入表,例如select ... from yourTable inner join (yourSelect) on (...)