将表名添加到列将返回未知列错误

时间:2017-10-29 17:09:36

标签: mysql sql node.js

我在使用select语句时遇到问题。我试图执行连接,我需要将表名添加到列中,但是会引发错误unknown column user_roles.name in field list

原始查询:

db.query(
    "SELECT user_role.name, user_role.description, user_role_admin.permission FROM user_role ur INNER JOIN user_role_admin ura ON ura.user_id = ? AND ura.role_id = ur.role_id",
[param],
function (req, res, next) {
    if (error) throw error;

    if (rows.length > 0) {
        res.json(rows);
    } else {
        res.sendStatus(500);
    }
}

它绝对是一个列,因为如果我尝试以下查询,我会从表中获取值。

SELECT name, description FROM user_role;

2 个答案:

答案 0 :(得分:2)

您已经为表名提供了别名。使用它们:

SELECT ur.name, ur.description, ura.permission
FROM user_role ur INNER JOIN
     user_role_admin ura
     ON ura.user_id = ? AND ura.role_id = ur.role_id;

一旦为表提供了别名,就无法识别原始表名。

答案 1 :(得分:1)

使用别名而不是完整的表名:

SELECT ur.name, ur.description, ura.permission 
FROM user_role ur --when alliased you cannot use original name
INNER JOIN user_role_admin ura 
   ON ura.user_id = ? 
  AND ura.role_id = ur.role_id