3

我的大脑一天很慢...

我加入的表:

政策办公室:

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

办公信息:

 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'

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

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

4

2 回答 2

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

要进一步了解有关联接的更多信息,请访问以下链接:

于 2013-03-01T17:40:16.177 回答
6

简单连接返回两组的笛卡尔乘法,第一个表中有 2 A,第二个表中有 3 A,您可能会得到 6 个结果。如果您只想要保单编号,那么您应该对其进行区分。

于 2013-03-01T17:42:04.480 回答