当我只想要一行时,SQL JOIN返回多行

Sha*_*hen 2 sql join

我的脑日很慢......

我加入的表格:

Policy_Office:

 PolicyNumber    OfficeCode
      1             A
      2             B
      3             C
      4             D
      5             A
Run Code Online (Sandbox Code Playgroud)

Office_Info:

 OfficeCode      AgentCode      OfficeName
      A             123             Acme 
      A             456             Acme
      A             789             Acme
      B             111             Ace
      B             222             Ace
      B             333             Ace
     ...            ...             ....
Run Code Online (Sandbox Code Playgroud)

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

我当前的查询如下所示:

SELECT
   *
FROM
   Policy_Office P
   INNER JOIN Office_Info O ON P.OfficeCode = O.OfficeCode
WHERE
   O.OfficeName = 'Acme'
Run Code Online (Sandbox Code Playgroud)

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

如何编写查询只返回两行?

Joh*_*Woo 9

SELECT  DISTINCT a.PolicyNumber
FROM    Policy_Office a
        INNER JOIN Office_Info b
            ON a.OfficeCode = b.OfficeCode
WHERE   b.officeName = 'Acme'
Run Code Online (Sandbox Code Playgroud)

要进一步了解联接,请访问以下链接:


Far*_*zad 5

简单联接返回两个集合的笛卡尔乘积,您在第一个表中有2 A,在第二个表中有3 A,您可能会得到6个结果。如果仅需要策略编号,则应对此进行区分。