2013-03-01 53 views
1

我有一个缓慢的大脑一天......SQL JOIN返回多行的时候我只想要一个行

我连接表:

Policy_Office:

PolicyNumber OfficeCode 
     1    A 
     2    B 
     3    C 
     4    D 
     5    A 

Office_Info:

OfficeCode  AgentCode  OfficeName 
     A    123    Acme 
     A    456    Acme 
     A    789    Acme 
     B    111    Ace 
     B    222    Ace 
     B    333    Ace 
    ...   ...    .... 

我想执行搜索以返回与办公室名称相关的所有策略。例如,如果我搜索“Acme”的成员,我应该得到两个策略:1 & 5.

我当前的查询看起来是这样的:

SELECT 
    * 
FROM 
    Policy_Office P 
    INNER JOIN Office_Info O ON P.OfficeCode = O.OfficeCode 
WHERE 
    O.OfficeName = 'Acme' 

但此查询返回多行,这是我所知道的是因为第二个表中有多个匹配项。

如何编写查询以仅返回两行?

+1

你正在使用什么数据库?你有一个一对多的关系,所以查询的期望结果是什么? – Taryn 2013-03-01 17:37:46

+0

你有一个表中有重复。 – 2013-03-01 18:18:32

回答

5
SELECT DISTINCT a.PolicyNumber 
FROM Policy_Office a 
     INNER JOIN Office_Info b 
      ON a.OfficeCode = b.OfficeCode 
WHERE b.officeName = 'Acme' 

为了进一步获得更多的知识有关加入,请访问以下链接:

+0

非常感谢 – mesutpiskin 2016-08-29 13:24:20

1

简单联接返回的笛卡尔乘积他们俩 设置,第一个表中有2个A,第二个表中有3个A,您可能会得到6个结果。如果你只想要保单号,那么你应该做一个明确的。