[英]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.