【问题标题】:ERROR 1093 (HY000): You can't specify target table for update in FROM clauseERROR 1093 (HY000): 您不能在 FROM 子句中指定要更新的目标表
【发布时间】: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 子句`

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

【问题讨论】:

  • 请使用更具描述性的标题。标题是否反映了您的问题?

标签: mysql mysql-error-1093


【解决方案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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-31
    • 2016-05-19
    • 2015-06-08
    • 2015-07-11
    • 1970-01-01
    • 1970-01-01
    • 2021-08-15
    相关资源
    最近更新 更多