“where 子句”中的未知列在程序中失败

Posted

技术标签:

【中文标题】“where 子句”中的未知列在程序中失败【英文标题】:Unknown column in 'where clause' failing in procedure 【发布时间】:2021-03-15 15:12:35 【问题描述】:

我正在尝试在一个过程中运行以下代码。它是BEGIN之后程序中的第一行代码

update `deleteRequestsInitial` 
SET `mamaID` = (SELECT `id` FROM `love_users`
                WHERE `love_users`.`email` = `deleteRequestsInitial`.`Email`);

当我在 phpmyadmin SQL 环境中运行它时,它运行良好。但是当我调用该过程时,我得到了错误:

“where 子句”中的未知列“deleteRequestsInitial.Email”

我浏览了很多关于“未知列”错误的帖子,但建议的解决方法似乎都不适合我。

【问题讨论】:

是的,但我都试过了。 您可以尝试使用连接重写它吗? UPDATE deleteRequestsInitial dri JOIN love_users lu ON lu.email = dri.Email SET dri.mamaID = lu.id 【参考方案1】:

你可能真的在运行这个:

update `deleteRequestsInitial` 
SET `mamaID` = (SELECT `id` FROM `love_users`
                WHERE `love_users`.`email` = `deleteRequestsInitial.Email`);

或者,该列可能是email,而不是Email

我建议去掉所有的反勾号:

UPDATE deleteRequestsInitial dri
    SET mamaID = (SELECT id
                  FROM love_users lu
                  WHERE lu.email = dri.Email
                 );

【讨论】:

同样的错误。是的,我确定Email 的情况; @KristiPerkins 。 . .那么该列在deleteRequestsInitial 中不存在。 @GordonLinoff 但是为什么它会在 phpmyadmin SQL 环境中运行良好呢? (问题中提到的OP) @PhilCoulson 。 . .实际上,假设是这两个环境连接到不同的数据库。或者他们中的一个可能会调整查询。

以上是关于“where 子句”中的未知列在程序中失败的主要内容,如果未能解决你的问题,请参考以下文章

Cypher where子句因多条路径而失败

有一个 mySQL 错误,未知列 where 子句 [重复]

#1054 - MySQL 中“where 子句”中的未知列“proximite”

Where 子句中的未知列

即使插入了列,“WHERE”子句中的 SQL 未知列

查询中的错误 (1054):“where 子句”中的未知列“TableValue”