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 子句中指定要更新的目标表的主要内容,如果未能解决你的问题,请参考以下文章
如何修复“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