MYSQL:将两个不同的字段连接到第三个表中的相同字段

时间:2014-09-26 18:14:32

标签: mysql

我试图将两个不同的字段连接到第三个查找表中的同一字段。我的数据结构如下:

Investments table:
Investment_ID
Company_Country_Code (e.g., US, UK, AU, FR)
Fund_Country_Code (e.g., US, UK, AU, FR)

Country Lookup Table:
Country_Code (e.g., US, UK, AU, FR)
Country_Name (e.g., United States, United Kingdom, Australia, France)

我想将Company_Country_Code和Fund_Country_Code加入国家/地区查找表中的Country_Code表,并拉出相应的Country_Names。我希望数据输出如下:

(Investment_ID, Company_Country_Name, Fund_Country_Name)
1, United States, France
2, United Kingdom, Australia
3, France, United States

是否有一种特殊的联接来实现这一目标?

谢谢!

2 个答案:

答案 0 :(得分:0)

这一切都取决于你想要的......如果你想过滤掉两个表中没有的任何结果,那么使用INNER JOIN ..如果你想加入而不过滤使用LEFT JOIN

SELECT i.Investment_ID, i.Company_Country_Name, i1.Fund_Country_Name
FROM country_lookup cl
JOIN investments i ON i.Company_Country_Code = cl.Country_Code
JOIN investments i1 ON i1.Fund_Country_Code = cl.Country_Code

没有过滤数据,你可以用左连接这样做

SELECT i.Investment_ID, i.Company_Country_Name, i1.Fund_Country_Name
FROM country_lookup cl
LEFT JOIN investments i ON i.Company_Country_Code = cl.Country_Code
LEFT JOIN investments i1 ON i1.Fund_Country_Code = cl.Country_Code

答案 1 :(得分:0)

没什么特别的 - 只做两个连接:

SELECT 
  i.Investment_ID, 
  c.Country_Name as Company_Country_Name, 
  f.Country_Name as Fund_Country_Name 
FROM 
  Investments i
JOIN
  Country c ON i.Company_Country_Code = c.Country_Code
JOIN
  Country f ON i.Fund_Country_Code = f.Country_Code