SQL Server:通过多个参数联接表

SQL Server:通过多个参数联接表,sql,sql-server,Sql,Sql Server,我有两个表需要根据FName和LName进行连接 这就是当前表的外观 表 Fname 名字 城市 电子邮件 表B Fname 名字 地址 城市 陈述 我想返回1个数据集,该数据集使用FName、LName和City作为复合唯一键显示用户的所有数据 SELECT TOP (10) dbo.TableA.Fname, dbo.TableA.Lname, dbo.TableA.Email, dbo.TableA.Party , dbo.TableB.DONR_MAIL_ORD

我有两个表需要根据
FName
LName
进行连接

这就是当前表的外观

  • Fname
  • 名字
  • 城市
  • 电子邮件
表B

  • Fname
  • 名字
  • 地址
  • 城市
  • 陈述
我想返回1个数据集,该数据集使用
FName
LName
City
作为复合唯一键显示用户的所有数据

SELECT TOP (10) 
    dbo.TableA.Fname, dbo.TableA.Lname, dbo.TableA.Email, dbo.TableA.Party
    , dbo.TableB.DONR_MAIL_ORD, dbo.TableB.DONR_CHARITABLE, 
FROM    dbo.TableA 
        INNER JOIN dbo.TableB 
        ON dbo.TableA.Fname = dbo.TableB.FN AND dbo.TableA.Lname = dbo.TableB.LN
WHERE  (dbo.TableA.Party = 'r') 
    AND (dbo.TableB.DONR_MAIL_ORD = 'y') 
    AND (dbo.TableB.DONR_CHARITABLE = 'y') 
    AND (dbo.TableB.DONR_POL = 'y') 
试着这样做

SELECT *
  FROM TableA A1 INNER JOIN TableB B2 ON 
  A1.Fname = B2.Fname AND 
  A1.Lname = B2.Lname AND 
  A1.City = B2.City;
你可以把这个问题提给SO
&假设您只想从两个表中获得Fname、Lname和City的唯一列表,则可以使用该列表。如果您只是加入这些表,那么最终只会得到两个表中匹配的数据。如果是这样,请使用ali786的答案。如果要从两个表中查找唯一的列表,请使用以下答案:

SELECT DISTINCT Fname, Lname, City FROM TableA
UNION
SELECT DISTINCT Fname, Lname, City FROM TableB
编辑: 根据你的回答,我猜你想要一个非常接近al798答案的东西,只需要一个
WHERE
子句

SELECT *
  FROM TableA A1
  JOIN TableB B2 
    ON A1.Fname = B2.Fname 
   AND A1.Lname = B2.Lname 
   AND A1.City = B2.City
 WHERE A1.Fname = "First name of person"
   AND A1.Lname = "Last name of person"
   AND A1.City  = "the city";

如果这不是您想要的,请提供一个样本数据集,并提供您期望的结果,因为还不完全清楚您想要的是什么。

您能提供样本数据和您期望的输出吗?@Praveen,到底有什么区别?或者您只是想看到自己键入,但实际上不知道任何答案?这两个表现在100%相同,我需要包括两个表中的字段。。所以我认为我的工会不起作用..见编辑评论。如果这不正确,请提供一个小样本数据集,以及您希望从中获得的结果。