MySQL 'user_id' в предложении where является неоднозначной проблемой
Как я могу исправить проблему, которую я продолжаю получать из кода ниже, в котором говорится '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'
5 ответов
Решение
Вам просто нужно указать, какие user_id
использовать, так как оба user_info
а также user
таблица имеет поле под названием user_id
:
... WHERE user.user_id='$user_id'
SQL не допустит этой неоднозначности, поскольку, как он знает, оба поля могут представлять совершенно разные данные.
У меня такая же ошибка, и я решил ее путем изменения:
var extra = 'AND (STATUS = 1 OR STATUS IS NULL)';
к
var extra = 'AND (ORDW.STATUS = 1 OR ORDW.STATUS IS NULL)';
Когда я присоединяюсь к более чем 2 столам.
Решение состоит в том, чтобы выбрать каждый столбец явно везде. Не используйте 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';
Попробуй это.
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';
Вы должны упомянуть псевдоним вашего столбца и присвоить 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'