Как мне добавить псевдоним во внутреннее соединение SQL?

#mysql #sql

#mysql #sql

Вопрос:

У меня есть две таблицы, подобные таким:

 Table Name: Foo
Foo Columns: (ID, UNIQUE_ID, NAME)

Table Name: Bar
Bar Columns (FOO_ID, UNIQUE_ID, NAME)
  

Я в основном хочу, чтобы все, bars которые принадлежат определенному foo , и результатом должно быть два столбца UNIQUE_ID и NAME каждого bar .

Мой SQL выглядит следующим образом:

 SELECT UNIQUE_ID, NAME FROM BAR B INNER JOIN FOO F ON F.ID = B.FOO_ID WHERE F.UNIQUE_ID = 123
  

Я предоставляю UNIQUE_ID . Проблема в том, что в обеих таблицах есть UNIQUE_ID столбец, поэтому я получаю следующую ошибку: SQL Error: ambiguous column name: UNIQUE_ID . Как мне добавить псевдоним для столбца в Foo , чтобы мой результат UNIQUE_ID и NAME содержал уникальный идентификатор Bar ? Мне не нужен псевдоним для UNIQUE_ID столбца в Bar .. результат должен иметь фактическое имя столбца.

Комментарии:

1. Вы пробовали F.UNIQUE_ID, B.NAME ? Кроме того, последнее, чтобы избежать неоднозначного столбца для вашего имени столбца.

2. @forpas без внутреннего соединения он не привязан к определенному Foo . FOO_ID Это внешний ключ, ссылающийся на Foo таблицу

Ответ №1:

Это то, чего вы хотите?

 SELECT B.UNIQUE_ID, B.NAME
FROM BAR B INNER JOIN
     FOO F
     ON F.ID = B.FOO_ID
WHERE F.UNIQUE_ID = 123
  

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

Комментарии:

1. о боже.. Я не знаю, как я пропустил это, ха-ха. Мозговой пердеж .. на самом деле вы были очень близки. Но вместо SELECT F.UNIQUE_ID я искал SELECT B.UNIQUE_ID . И поскольку в обеих таблицах есть NAME , это также должно было бы быть B.NAME . Это работает отлично