Sql server 连接两个SQL表,但不相乘行
现在我真的试着从3小时后在谷歌上找到任何东西。 我有两个SQL表,我想彼此连接 Table_LN是一个用户表,它统计唯一的电子邮件属性 Table_AD是一个具有Active Directory电子邮件属性和用户原则名称My problem的表,电子邮件地址不等于UPN,也不唯一 我的目标是使用表_AD中的UPN扩展表_LN中的行。如果表_AD中有多行具有相同的电子邮件地址,则应使用找到的第一行。我还需要一个国家的过滤器 我尝试的是以下代码:Sql server 连接两个SQL表,但不相乘行,sql-server,select,join,Sql Server,Select,Join,现在我真的试着从3小时后在谷歌上找到任何东西。 我有两个SQL表,我想彼此连接 Table_LN是一个用户表,它统计唯一的电子邮件属性 Table_AD是一个具有Active Directory电子邮件属性和用户原则名称My problem的表,电子邮件地址不等于UPN,也不唯一 我的目标是使用表_AD中的UPN扩展表_LN中的行。如果表_AD中有多行具有相同的电子邮件地址,则应使用找到的第一行。我还需要一个国家的过滤器 我尝试的是以下代码: SELECT [FirstName],
SELECT
[FirstName],
[LastName],
[EMailAddress],
[UPN],
[OfficeCountry]
FROM [Table_LN]
RIGHT JOIN [Table_AD] ON [Table_LN].[EMailAddress] = [Table_AD].[EMail]
WHERE
OfficeCountry = 'Malaysia'
我现在的问题是,这个语句会为每个额外的电子邮件地址创建更多的行。这意味着它会在目录中复制我的用户
yomebody能帮我吗?或者有人知道有人问这个话题吗
谢谢您需要一个较小的表才能加入。我喜欢用CTE。子查询、临时表等也可以正常工作
;WITH cte AS (
SELECT [UPN],
[Email],
[RNum] = ROW_NUMBER() OVER(PARTITION BY [Email] ORDER BY [<PK Field>])
FROM [Table_AD]
)
SELECT
[FirstName],
[LastName],
[EMailAddress],
[UPN],
[OfficeCountry]
FROM [Table_LN]
LEFT JOIN [cte]
ON [cte].[EMail] = [Table_LN].[EMailAddress]
AND [cte].[RNum] = 1
WHERE
OfficeCountry = 'Malaysia'
在ROW_NUMBER函数中修改ORDER BY以更改第一行。表的主键可能会为您提供表中的第一个条目 在联接之前删除?使用哪个候选键选择外部表中的行?在里面的桌子里?除非执行1对0或1匹配,否则您将始终增加行集大小。您希望得到什么结果?只返回一封特定的电子邮件,将它们连接成一列?这很好!这正是我想要的!非常感谢你!现在我可以回家了;