MySQL 'user_id' в предложении where является неоднозначной проблемой - PullRequest
16 голосов
/ 07 мая 2010

Как я могу исправить проблему, которую я продолжаю получать из кода ниже, который гласит 'user_id' in where clause is ambiguous.Заранее спасибо за помощь.

Вот таблица mysql.

SELECT user.*, user_info.* 
FROM user 
INNER JOIN user_info ON user.user_id = user_info.user_id
WHERE user_id='$user_id'

Ответы [ 4 ]

35 голосов
/ 07 мая 2010

Вам просто нужно указать, какой user_id использовать, так как в таблицах user_info и user есть поле с именем user_id:

... WHERE user.user_id='$user_id'

SQL не допустит этой неоднозначности, поскольку, как известно, оба поля могут представлять совершенно разные данные.

0 голосов
/ 11 февраля 2017

Попробуйте это.

SELECT u.user_id, u.user_fudge, ui.foo, ui.bar
FROM user AS u
INNER JOIN user_info AS ui
   ON ui.user_id = u.user_id
WHERE u.user_id = '$user_id';
0 голосов
/ 14 марта 2015

Вы должны упомянуть псевдоним вашего столбца и присвоить user_id как

SELECT user.*, user_info.* 
FROM user as u 
INNER JOIN user_info as ui ON u.user_id = ui.user_id
WHERE u.user_id='$user_id'
0 голосов
/ 07 мая 2010

Решение состоит в том, чтобы выбрать каждый столбец явно везде. Не используйте user. * И user_info. * В списке выбора, либо:

SELECT u.user_id, u.user_fudge, ui.foo, ui.bar
FROM user u
INNER JOIN user_info ui
    ON ui.user_id = u.user_id
WHERE u.user_id = '$user_id';
...