如何内部连接两个表?

Posted

技术标签:

【中文标题】如何内部连接两个表?【英文标题】:How can I inner join two tables? 【发布时间】:2020-01-30 09:36:13 【问题描述】:

嗨!谁能告诉我我的关节有什么问题? 非常感谢!

SELECT 
country_code,
country_name,
year,
crude_birth_rate,
crude_death_rate

FROM `bigquery-public-data.census_bureau_international.country_names_area`as Country_name_area
INNER JOIN `bigquery-public-data.census_bureau_international.birth_death_growth_rates` as birth_death_growth_rates

ON birth_death_growth_rates.country_code = Country_name_area.country_code;

【问题讨论】:

我的关节有什么问题?....您面临什么问题/错误? 这不是 country_nameS_area? 当涉及多个表时,良好的编程习惯是限定all 列名。例如。 Country_name_area.country_code 而不仅仅是 country_code。 (即使在选择列表中。) @jarlh 完美!非常感谢,这让它工作得很棒:) 【参考方案1】:

引用具有表别名的列:

SELECT 
Country_name_area.country_code,
Country_name_area.country_name,
birth_death_growth_rates.year,
birth_death_growth_rates.crude_birth_rate,
birth_death_growth_rates.crude_death_rate

FROM `bigquery-public-data.census_bureau_international.country_names_area`as Country_name_area
INNER JOIN `bigquery-public-data.census_bureau_international.birth_death_growth_rates` as birth_death_growth_rates

ON birth_death_growth_rates.country_code = Country_name_area.country_code;

【讨论】:

【参考方案2】:

试试这个:

    您必须为表和使用添加别名到选择列语句并加入。

【讨论】:

【参考方案3】:

当您运行查询时,错误消息非常清楚:

错误:列名 country_code 在 [2:1] 处不明确

你应该学会阅读错误信息; BQ 非常擅长解释查询中的问题。

country_code 列在两个表中。正如其他答案中提到的,您希望限定所有列引用。我想指出,更简单的表别名使查询更易于编写和阅读。

您也可以使用USING,因为JOIN 键具有相同的名称:

SELECT country_code, cna.country_name, bdgr.year,
       bdgr.crude_birth_rate, bdgr.crude_death_rate
FROM `bigquery-public-data.census_bureau_international.country_names_area` cna JOIN
     `bigquery-public-data.census_bureau_international.birth_death_growth_rates` bdgr
     USING (country_code);

【讨论】:

以上是关于如何内部连接两个表?的主要内容,如果未能解决你的问题,请参考以下文章

如何将两个 DataTable 与内部连接连接在一起

如何将不同数据上下文的表进行内部连接?[重复]

CakePHP:如何使用内部联接从两个表中检索数据?

两个表连接时如何检查字段是不是为空

连接两个表时如何仅返回最近的日期

如何内部连接来自不同数据上下文的表? [复制]