19

我怎样才能纠正我从下面的代码中得到的问题'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=1
4

4 回答 4

45

您只需要指定使用哪个user_id,因为 theuser_infousertable 都有一个名为 的字段user_id

... WHERE user.user_id=1

SQL 不会容忍这种歧义,因为据它所知,这两个字段可以表示完全不同的数据。

于 2010-05-07T12:00:45.127 回答
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 = 1;
于 2010-05-07T12:01:36.093 回答
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=1
于 2015-03-14T13:11:25.040 回答
0

我有同样的错误,我已经通过更改解决了它:

var extra = 'AND (STATUS = 1 OR STATUS IS NULL)';

var extra = 'AND (ORDW.STATUS = 1 OR ORDW.STATUS IS NULL)';

当我加入超过 2 张桌子时。

于 2021-08-24T01:53:32.320 回答