【发布时间】:2013-12-24 00:50:12
【问题描述】:
我有一个由 id、name、email 组成的 SQL 表……我有另一个包含 id、email、emailstatus 的 SQL 表,但这两个 id 不同,它们不相关。这两个表之间唯一的共同点是电子邮件。
我想加入这 2 个表,将表 1 中的所有信息带入表 1 和表 2 中的电子邮件地址是否相同且电子邮件状态为“已退回”。但是我正在写的查询给了我比我预期的更多的记录,因为 tbl_webhook(第二个表) 中有多个行对于申请人(第一个表)中的每一行。我想知道申请人是否曾经有过电子邮件退回。
没有加入的查询显示 23000 条记录,但加入后显示 42000 条记录,这是因为重复我如何才能保持相同的 23000 条记录只添加第二个表中的信息?
这是我的查询:
SELECT
A.[Id]
,A.[Application]
,A.[Loan]
,A.[Firstname]
,A.[Lastname]
,A.[Email],
,H.[Email], H.[EmailStatus] as BouncedEmail
FROM Applicant A (NOLOCK)
left outer join [tbl_Webhook] [H] (NOLOCK)
on A.Email = H.Email
and H.[event]='bounced'
这是所需数据的样本:
id email name emailFromTable2 emailstatus
1 test2@yahoo.com lili test2@yahoo.com bounced
2 tesere@yahoo.com mike Null Null
3 tedfd2@yahoo.com nik tedfd2@yahoo.com bounced
4 tdfdft2@yahoo.com sam Null Null
5 tedft2@yahoo.com james tedft2@yahoo.com bounced
6 tedft2@yahoo.com San Null
【问题讨论】:
-
除了您已经在What kind of join between 2 SQL table that they don't have common id? 提出的问题之外,您真的不需要问这个问题,最好澄清您的原始问题并酌情更新答案。
标签: sql sql-server sql-server-2008