2012-08-01 31 views
1

我尝试以下查询:ERROR 1093(HY000):不能指定更新目标表中FROM子句

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):您不能指定目标表 'tm_visitor' 在FROM clause`

到底哪里出问题了,如何解决它的更新?

+1

请使用一个更具描述性标题。标题是否反映了您的问题? – Mohayemin 2012-08-01 05:15:41

回答

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 
+0

这是由于前导零。您可以尝试以下方法:'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;' – sel 2012-08-01 05:36:56

+0

您可以将它转换为最大签名.'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;' – sel 2012-08-01 05:39:33

0

the manual

的情况下,会出现此错误[...],它试图在子查询中修改一个表,然后从同一个表

相关问题