Соедините 2 таблицы с несколькими повторяющимися именами столбцов - Bigquery (Ошибка: повторяющиеся имена столбцов в результате не поддерживаются) - PullRequest
0 голосов
/ 06 мая 2020

Я использую большой запрос и мне нужно объединить 2 таблицы, table1 имеет 14 столбцов, а table2 - 16. Мне нужно получить значения из таблицы 2 на основе table1.FIPS и table2.fip_code. 2 столбца названы одинаково (количество столбцов и состояние столбца, table1 имеет больше значений, чем table2 для этих столбцов). Я пытаюсь выполнить внешнее соединение, но это не удается из-за имен столбцов:

* SELECT * FROM table1 FULL внешнее соединение table2 на table1.FIPS = table2.fip_code Ошибка: «Повторяющиеся имена столбцов в результате не поддерживаются. Обнаружены дубликаты: округ, штат» *

Я пробовал использовать следующий псевдоним:

* SELECT * ИСКЛЮЧАЯ (округ, штат), округ AS county_one, состояние AS county_two FROM table1 FULL внешнее соединение table2 на table1.FIPS = table2.fip_code * Ошибка: имя столбца округа неоднозначно

Любой совет? Я не могу исключить поля округа и штата, поскольку они мне нужны для моего кода.

Спасибо!

Ответы [ 3 ]

1 голос
/ 06 мая 2020

Вы можете создать псевдоним таблицы, а затем использовать его перед именами столбцов, чтобы определить, из какой таблицы вы получаете столбцы.

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
0 голосов
/ 06 мая 2020

Ваш запрос:

SELECT * FROM table1 FULL внешнее соединение table2 на table1.FIPS = table2.fip_code

Ваша цель:

"Мне нужно получить значения из таблицы 2 на основе table1.FIPS и table2.fip_code"

Простым способом было бы использовать псевдонимы для имен ваших таблиц:

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]
0 голосов
/ 06 мая 2020

Если это дубликаты, вам нужно удалить их только из одной таблицы:

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;

Или используйте REPLACE:

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...