mysql从两个项匹配的多个表中选择

时间:2013-10-04 13:56:20

标签: php mysql sql

从一个表中选择数据并将其与另一个表中的数据匹配的最佳方法是什么?然后将这些数据一起返回?

我有一张包含大量信息的表格,它是相关的国家/地区名称。 我需要从另一个表中获取与国家/地区名称匹配的国家/地区代码

最好使用一个mysql JOIN函数将数据链接在一起,或者使用foreach()之类的东西来生成单独的请求来获取每个项目。

我有一种感觉JOIN(或类似的东西)将是最好的解决方案,但我真的不知道如何构建mySQL查询,记住我需要从两个表返回的数据。

$sql = "SELECT DISTINCT r.country,c.* FROM resorts LEFT JOIN ( SELECT * FROM Country WHERE r.country = c.countryName )";

表1

  • 国家

表2

  • ID
  • 国家名称
  • COUNTRYCODE

3 个答案:

答案 0 :(得分:2)

这是MySQL中一个非常简单的概念;最简单的连接之一:

SELECT columns, countryCode
FROM t1
JOIN t2 ON (t1.countryName = t2.countryName)

编辑:您在问题中添加了真实的表名/列,因此我将用以下内容重写查询:

SELECT id, countryName, countryCode
FROM Country
JOIN resorts ON (country = countryName)

答案 1 :(得分:1)

SELECT r.country,c.id, c.CountryName, c.CountryCode
FROM resorts as r
LEFT JOIN Country AS c 
  ON r.country = c.countryName

或者摆脱LEFT以返回所有拥有国家/地区的度假村记录(而不是返回所有度假村记录的LEFT,无论是否存在国家/地区记录

答案 2 :(得分:0)

Join in SQL确实从两个表返回数据, 当您连接2个表时,SQL解析器/引擎生成“笛卡尔积”并在table1的每一行上循环,并检查连接条件,第二个表table2中的每一行返回两个表中的选定列。 所以,例如最后,当你连接table1(包含2行)和table2(包含3行)时,你实际上做了2 * 3的检查/循环,即6。