如何内部连接两个表?
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);
【讨论】:
以上是关于如何内部连接两个表?的主要内容,如果未能解决你的问题,请参考以下文章