繁体   English   中英

SQLSTATE [42S02]-来自子查询

[英]SQLSTATE[42S02] - from subquery

在使用通过别名调用的表处理子查询时,MYSQL触发SQLSTATE [42S02]错误

"UPDATE call_log AS c1 INNER JOIN call_log AS c2 ON c1.id = c2.id SET c1.end ='".$reponse."' WHERE c1.id = (SELECT MAX(c2.id) FROM (SELECT * from c2 WHERE c2.num =".$numero." ) derivee )";

理想的结果是更新call_log表中包含$ num变量的最后匹配行。 由于MYSQL禁止根据同一张表进行子查询,因此我按照此处的建议使用别名来引用这些表

mySQL错误:#1248-每个派生表必须具有自己的别名

还是在MySQL中出现错误“每个派生表必须具有自己的别名”?

我得到的错误是:

PHP致命错误:消息为'SQLSTATE [42S02]的未捕获异常'PDOException':未找到基表或视图:1146表'ERP.c2'不存在”

好的,我发现了问题。 我稍微更改了命令以简化请求。

$sql ="UPDATE call_log as c1 SET c1.end = '".$reponse."' WHERE c1.id = (SELECT MAX(derive.id) FROM (SELECT * FROM call_log c2) derive WHERE derive.num =".$numero.")";

主要区别在于,我为表本身创建了一个别名,作为c2 我也使用(SELECT * FROM call_log c2) derive的别名(SELECT * FROM call_log c2) derive ,在该位置, derive将作为别名来过滤子查询结果!

如果对别人有帮助...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM