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

时间:2015-09-08 04:18:15

标签: sql sql-server

根据FNameLName,我需要加入2个表格。

这就是表格目前的样子

TableA

  • FNAME
  • L-NAME
  • 电子邮件

表B

  • FNAME
  • L-NAME
  • 地址
  • 国家

我想返回1个数据集,该数据集使用FNameLNameCity作为复合唯一键向我显示用户的所有数据。

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') 

2 个答案:

答案 0 :(得分:4)

假设您只想从两个表中获得唯一的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";

如果这不是您想要的,请提供样本数据集并提供您期望的结果,因为您不太清楚您在寻找什么。

答案 1 :(得分:3)

尝试这样做,

SELECT *
  FROM TableA A1 INNER JOIN TableB B2 ON 
  A1.Fname = B2.Fname AND 
  A1.Lname = B2.Lname AND 
  A1.City = B2.City;

您可以参考SO的这些问题 Join table with composite key twice &安培;这Join tables on columns of composite foreign / primary key in a query

相关问题