[英]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中出现错误“每个派生表必须具有自己的别名”?
我得到的错误是:
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.