Когда вы объединяете несколько таблиц в SQL-запросе, если столбец с одинаковым именем присутствует в обеих таблицах, то BigQuery не знает, какой из них использовать (если вы явно не скажете об этом), поэтому он выдает ошибку с неоднозначным именем столбца.
Редактор Bigquery WebUI достаточно умен, чтобы выделить точную строку, в которой присутствует неоднозначный столбец (обратите внимание на красное восклицание на полях редактора sql). Решение может быть в одном из приведенных ниже методов:
Убедитесь, что в списке выбора нет неоднозначных имен столбцов:
select Id, Name, Description from table1 t1 join table2 t2 on t2.Id = t1.Id;
В этом примере Идентификатор имени столбца присутствует в обеих таблицах, t1 и t2. Вы можете прояснить это, разметив столбцы, как показано ниже:
select t1.Id, t1.Name, t2.Description from table1 t1 join table2 t2 on t2.Id = t1.Id;
Убедитесь, что предложение Where / Join не имеет двусмысленных имен столбцов:
select t1.Id, t1.Name, t2.Description from table1 t1 join table2 t2 on t2.Id = t1.Id Where Id = 100;
В этом примере, поскольку идентификатор присутствует в обеих таблицах, создайте псевдоним столбца, как показано ниже:
select t1.Id, t1.Name, t2.Description from table1 t1 join table2 t2 on t2.Id = t1.Id Where t1.Id = 100;
Никогда не используйте запятые в предложении FROM. Всегда используйте правильный, явный синтаксис Join:
select table1.* from table1, table2, table3 where table1.Id = table2.Id;
Использование запятых для Join(соединений) может сбивать с толку, приводить к ошибкам и данный метод имеет меньшую читабельность. Всегда старайтесь использовать явное объединение и явные столбцы объединения. Это значительно сократит количество ошибок, а также упростит работу по устранению неполадок
6 ответов