如何更正我从以下代码'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'
答案 0 :(得分:34)
您只需指定要使用的user_id
,因为user_info
和user
表都有一个名为user_id
的字段:
... WHERE user.user_id='$user_id'
SQL不会容忍这种歧义,因为对于它所知道的,两个字段都可以代表完全不同的数据。
答案 1 :(得分:0)
解决方案是在任何地方明确选择每列。不要在选择列表中使用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';
答案 2 :(得分:0)
您应该提到列的别名,并分配给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'
答案 3 :(得分:0)
试试这个。
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';