Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用多个重复列名联接2个表-Bigquery(错误:结果中不支持重复列名)_Sql_Google Bigquery_Outer Join_Columnname - Fatal编程技术网

Sql 使用多个重复列名联接2个表-Bigquery(错误:结果中不支持重复列名)

Sql 使用多个重复列名联接2个表-Bigquery(错误:结果中不支持重复列名),sql,google-bigquery,outer-join,columnname,Sql,Google Bigquery,Outer Join,Columnname,我使用的是大查询,需要连接两个表,表1有14列,表2有16列。我需要根据table1.FIPS和table2.fip_代码从表2中检索值。 其中两列的名称相同(列county和列state,表1中该列的值大于表2)。 我正在尝试进行外部联接,但由于列名原因而失败: *从表1 完全外部连接表2 在表1中。FIPS=表2.fip_代码 错误是:“结果中不支持重复的列名。发现重复的列名:county,state”* 我使用alias进行了如下尝试: *选择 *除(县、州)外, 县为县一,州为县二 从表

我使用的是大查询,需要连接两个表,表1有14列,表2有16列。我需要根据table1.FIPS和table2.fip_代码从表2中检索值。 其中两列的名称相同(列county和列state,表1中该列的值大于表2)。 我正在尝试进行外部联接,但由于列名原因而失败:

*从
表1
完全外部连接
表2
在表1中。FIPS=表2.fip_代码 错误是:“结果中不支持重复的列名。发现重复的列名:county,state”*

我使用alias进行了如下尝试:

*选择 *除(县、州)外, 县为县一,州为县二 从
表1
完全外部连接
表2
在表1中。FIPS=表2。fip_代码*
错误是:列名county不明确

有什么建议吗?我不能排除county和state字段,因为我的代码需要它们


谢谢

如果这些是重复的,您只需要从一个表中删除它们:

SELECT table1.* EXCEPT (county, state),
       table1.county as county_1, table1.state as state_1
       table2.*
FROM table1 FULL JOIN
     table2 
     ON table1.FIPS = table2.fip_code;
或使用
替换

SELECT table1.* REPLACE (county as count_1, state as state_1),
       table2.*
FROM table1 FULL JOIN
     table2 
     ON table1.FIPS = table2.fip_code;
或选择值作为记录:

SELECT table1, table2
FROM table1 FULL JOIN
     table2 
     ON table1.FIPS = table2.fip_code;

您可以创建表别名,然后在列名之前使用它来标识从哪个表中获取列

SELECT * EXCEPT(county,state), 
  t1.county AS county_one, 
  t1.state AS county_two,
  t2.* 
FROM table1 t1
join table2 t2
on t1.FIPS = t2.fip_code
您的查询:

从表1上的表1完全外部联接表2中选择*。FIPS=表2.fip_代码

你的目标是:

“我需要根据table1.FIPS和table2.fip_代码从表2中检索值”

一种简单的方法是为表名添加别名:

Select 
    t2.*
--, t1.*  -- you said you only need columns from t2, so I commented this out.     
From 
    table1 as t1               -- depending on the sql flavor, you may have 
    outer join table2 as t2    -- to omit the 'as' on these lines
    on t1.FIPS = t2.fip_code
Where
    [add some where stuff here if needed]

相同错误“结果中不支持重复的列名。发现重复的列名:County,State”。我的列没有前缀,所以更改表名不会影响列名。谢谢!选项一和你的语法有效(不确定它与我使用的语法有多不同,但这一个有效)@Montevidean。您的有
选择*
,它没有指定表名。