ERROR 1093 (HY000): 您不能在 FROM 子句中指定要更新的目标表

Posted

技术标签:

【中文标题】ERROR 1093 (HY000): 您不能在 FROM 子句中指定要更新的目标表【英文标题】:ERROR 1093 (HY000): You can't specify target table for update in FROM clause 【发布时间】:2012-07-29 23:21:36 【问题描述】:

我尝试了以下查询:

mysql> INSERT INTO tm_visitor (VDT,VID, NAME, CONTACT) values(REPLACE(LE
FT(NOW(), 10), '-', ''),(SELECT LPAD(COALESCE(MAX(VID) + 1, 000001), 6, '0') FRO
M tm_visitor),'yatin','9876543120');

但我收到以下错误。

ERROR 1093 (HY000): You can't specify target table 'tm_visitor' for update in FROM 子句`

出了什么问题,我该如何解决?

【问题讨论】:

请使用更具描述性的标题。标题是否反映了您的问题? 【参考方案1】:
INSERT INTO tm_visitor (VDT,VID, NAME, CONTACT) 
SELECT REPLACE(LEFT(NOW(), 10), '-', ''), 
   LPAD(COALESCE(MAX(VID) + 1, 000001), 6, '0'), 
   'yatin','9876543120' 
FROM tm_visitor

【讨论】:

这是由于前导零。你可以试试:INSERT INTO tm_visitor (VDT,VID, NAME, CONTACT) SELECT REPLACE(LEFT(NOW(), 10), '-', ''), LPAD(MAX(TRIM(LEADING '0' FROM VID)) + 1, 6, '0'), 'yatin','9876543120' FROM tm_visitor; 您也可以将其转换为最大签名。INSERT INTO tm_visitor (VDT,VID, NAME, CONTACT) SELECT REPLACE(LEFT(NOW(), 10), '-', ''), LPAD(MAX(CAST(VID AS SIGNED )) + 1, 6, '0'), 'yatin','9876543120' FROM tm_visitor; 请解释一下到底出了什么问题。你已经修复了 OP 的代码,但你没有解释哪里出了问题,以便对其他有相同或类似问题的人有用【参考方案2】:

来自the manual:

此错误发生在 [...] 尝试修改表并从子查询中的同一表中进行选择的情况

【讨论】:

以上是关于ERROR 1093 (HY000): 您不能在 FROM 子句中指定要更新的目标表的主要内容,如果未能解决你的问题,请参考以下文章

错误 [HY000] 错误:聚合函数调用不能嵌套 */

如何修复“ERROR 130 (HY000):文件格式不正确”

报错集:ERROR 3 (HY000): Error writing file ‘/tmp/psyZMRtme‘ (Errcode: 28 - No space left on device)

报错集:ERROR 3 (HY000): Error writing file ‘/tmp/psyZMRtme‘ (Errcode: 28 - No space left on device)

报错集:ERROR 3 (HY000): Error writing file ‘/tmp/psyZMRtme‘ (Errcode: 28 - No space left on device)

mysql 修改密码提示ERROR 1819 (HY000): Your password does not satisfy the current policy requirements