我怎样才能纠正我从下面的代码中得到的问题'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
我怎样才能纠正我从下面的代码中得到的问题'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
您只需要指定使用哪个user_id
,因为 theuser_info
和user
table 都有一个名为 的字段user_id
:
... WHERE user.user_id=1
SQL 不会容忍这种歧义,因为据它所知,这两个字段可以表示完全不同的数据。
解决方案是在任何地方显式选择每一列。不要在您的选择列表中使用 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;
您应该提及列的别名并分配给 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
我有同样的错误,我已经通过更改解决了它:
var extra = 'AND (STATUS = 1 OR STATUS IS NULL)';
到
var extra = 'AND (ORDW.STATUS = 1 OR ORDW.STATUS IS NULL)';
当我加入超过 2 张桌子时。