2013-03-01 98 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個結果。如果你只想要保單號,那麼你應該做一個明確的。