在mysql中连接两个表给出了重复的结果
问题描述:
我试图连接mysql
中的2个表。但是,我得到重复值。这SQLFIDDLE将明确我的意思。在mysql中连接两个表给出了重复的结果
因此,您可以看到TW_ID
和PFC_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'
让我知道,如果你需要进一步澄清。谢谢。
答
要么你加入ON tw.id=pfc.id
,或者如果不适用你可能需要修改你的模式。
这是当你加入会发生什么ON tw.wholesaler_id = pfc.currency_supplier_id
:
- 从
tw
表中检索的第一行是tw.id=1
- 该行的
tw.wholesaler_id
是11(因为你WHERE
条款),所以它会寻找对于pfc.currency_supplier_id
的pfc
表中的行也等于11 - 这是4行(id
等于1,11,21,23)。因此,跨产品将(1, 1)
,(1, 11)
,(1,21)
,(1,23)
- 从
tw
表中的下一行被检索,并与pfc
表,这将导致(11,1), (11,11), (11,21), (11,23)
相同的搜索发生...
我承认我不完全明白你想要做什么。多一点解释可能会有所帮助。
我试过了他们两个 – 2015-02-06 15:46:14
为什么GROUP BY? (是否有任何聚合函数被使用?) – jarlh 2015-02-06 15:46:45
连接是一个叉积(通常带条件)。如果一个t1行与4个t2行匹配,则会返回1 x 4 = 4行。如果2个t1行匹配4个t2行,则返回2 x 4 = 8行。如果你想要其他逻辑,你必须用文字或SQL来更好地描述它。 – jarlh 2015-02-06 15:51:35