Столбец 'user_id' в списке полей неоднозначен

Я пытаюсь получить пользовательскую информацию пользователя, оставившего этот отзыв.

Со следующим кодом:

SELECT username, image, user_id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE us.user_id = 1 AND
re.review_id= 1

Я получаю сообщение об ошибке:

Столбец 'user_id' в списке полей неоднозначен

Что это значит?

Ответ 1

Это означает, что обе таблицы в запросе имеют столбец user_id.

Вам нужно указать, какой из них вы хотите получить в инструкции SELECT, например SELECT username, image, re.user_id

Ответ 2

Столбец

user_id находится в таблицах table_reviews, table_users.

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

SELECT username, image, us.user_id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE us.user_id = 1 AND
re.review_id= 1

Ответ 3

Это означает, что столбец user_id находится в обеих таблицах, т.е. в table_reviews, table_users

Попробуйте вот так:

SELECT username, image, us.user_id    //or re.user_id
FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE us.user_id = 1 AND
re.review_id= 1

Ответ 4

В разделе where (WHERE us.user_id = 1) проверяются не только выбранные значения (SELECT username, image, user_id), все объединенные столбцы рассматриваются в предложении where, поэтому в вашем примере у вас есть столбец user_id в обеих соединенных таблицах, Если у вас есть запрос вроде этого:

SELECT table_reviews.id FROM table_users AS us
JOIN table_reviews AS re
ON re.user_id = us.user_id
WHERE id

id будет неоднозначным, поскольку id-s из table_reviews и table_reviews будет рассмотрен в where where, хотя выбран только идентификатор из table_reviews.