2015-02-06 60 views
0

我試圖連接mysql中的2個表。但是,我得到重複值。這SQLFIDDLE將明確我的意思。在mysql中連接兩個表給出了重複的結果

因此,您可以看到TW_IDPFC_ID。我只需要(1, 1), (11, 11), (21, 21)等..現在我我使用此查詢得到(1, 1), (1, 11), (1, 21), ...

SELECT tw.id as tw_id, pfc.id as pfc_id 
FROM account_treasury_wholesale tw 
INNER JOIN purchase_foreign_currency pfc 
    ON tw.wholesaler_id = pfc.currency_supplier_id 
WHERE tw.wholesaler_id='11' 

讓我知道,如果你需要進一步澄清。謝謝。

+0

我試過了他們兩個 – 2015-02-06 15:46:14

+0

爲什麼GROUP BY? (是否有任何聚合函數被使用?) – jarlh 2015-02-06 15:46:45

+0

連接是一個叉積(通常帶條件)。如果一個t1行與4個t2行匹配,則會返回1 x 4 = 4行。如果2個t1行匹配4個t2行,則返回2 x 4 = 8行。如果你想要其他邏輯,你必須用文字或SQL來更好地描述它。 – jarlh 2015-02-06 15:51:35

回答

0

要麼你加入ON tw.id=pfc.id,或者如果不適用你可能需要修改你的模式。

這是當你加入會發生什麼ON tw.wholesaler_id = pfc.currency_supplier_id

  1. tw表中檢索的第一行是tw.id=1
  2. 該行的tw.wholesaler_id是11(因爲你WHERE條款),所以它會尋找對於pfc.currency_supplier_idpfc表中的行也等於11 - 這是4行(id等於1,11,21,23)。因此,跨產品將(1, 1)(1, 11)(1,21)(1,23)
  3. tw表中的下一行被檢索,並與pfc表,這將導致(11,1), (11,11), (11,21), (11,23)相同的搜索發生...

我承認我不完全明白你想要做什麼。多一點解釋可能會有所幫助。

相關問題