Как решить ошибку “Column name is ambiguous” в Google

Когда вы объединяете несколько таблиц в 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 ответов

  1. Уведомление: Ambiguous column name sql error
  2. Уведомление: Sql error the table is ambiguous

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *