MySQL的'user_id'在where子句中是模糊的问题

时间:2010-05-07 11:59:33

标签: mysql mysql-error-1052

如何更正我从以下代码'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 个答案:

答案 0 :(得分:34)

您只需指定要使用的user_id,因为user_infouser表都有一个名为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';