Mysql “on子句”中使用实际值筛选器的未知列

Mysql “on子句”中使用实际值筛选器的未知列,mysql,sql,Mysql,Sql,我使用knex和MYSQL生成了这个查询,它给出了ER_BAD_FIELD_ERROR:“on子句”中的未知列“5025052”。我怎样才能让它工作 要点:围绕这个问题存在相关问题,但它们似乎不涉及使用实际字段值进行过滤的情况,例如t1.user_id=5025052。出于某些性能原因,我被建议在join子句中包含所有过滤器,而不是使用where clouse。如果不是真的,我准备学习 选择 `t1`.*、`users`.`phone`、`users`.`email` 从…起 `t1` 内连接

我使用knex和MYSQL生成了这个查询,它给出了ER_BAD_FIELD_ERROR:“on子句”中的未知列“5025052”。我怎样才能让它工作

要点:围绕这个问题存在相关问题,但它们似乎不涉及使用实际字段值进行过滤的情况,例如t1.user_id=5025052。出于某些性能原因,我被建议在join子句中包含所有过滤器,而不是使用where clouse。如果不是真的,我准备学习

选择 `t1`.*、`users`.`phone`、`users`.`email` 从…起 `t1` 内连接 `users`ON`users`.`id`=`t1`.`user\u id` 和't1`.'user_id`='5025052` 和“t1”。“已删除”=0 和“用户”。“已删除”=0;
反勾号用于转义列和表名,而不是值

替换

AND `t1`.`user_id` = `5025052`

或者,如果是varchar字段,则使用引号

AND `t1`.`user_id` = '5025052'
在join子句中加入所有条件是不必要的,也是不常见的。所以你也可以做:

SELECT t1.*, users.phone, users.email
FROM t1
INNER JOIN users ON users.id = t1.user_id
WHERE t1.user_id = '5025052'
  AND t1.deleted = 0
  AND users.deleted = 0;

使用时,可以使用knex.raw删除不必要的反勾号。

反勾号用于转义列和表名,而不是值

替换

AND `t1`.`user_id` = `5025052`

或者,如果是varchar字段,则使用引号

AND `t1`.`user_id` = '5025052'
在join子句中加入所有条件是不必要的,也是不常见的。所以你也可以做:

SELECT t1.*, users.phone, users.email
FROM t1
INNER JOIN users ON users.id = t1.user_id
WHERE t1.user_id = '5025052'
  AND t1.deleted = 0
  AND users.deleted = 0;

使用时,您可以使用knex.raw删除不必要的回勾。

现在就开始。。。反应相当快!!注意,用户id字段是varchar,而不是number。所以他们仍然出现在引用中太好了,我看到了你的最新帖子,我必须找到一种方法来删除回帖,现在就这么做。。。反应相当快!!注意,用户id字段是varchar,而不是number。所以它们仍然以引用的形式出现很好,我已经看到了你的最新帖子,我必须找到一种方法来删除回帖,