MySQL INSERT SELECT语句引发错误1062:键2的重复项“”
基本上,我有一个名为document的表,其中包含一个名为host的列。我已经创建了另一个名为rev_host的列,我只想在主机和rev_主机之间存储反向字符串。例如,如果主机值为www.cmu.edu,我想将ude.umc.www保存到rev_主机。然后我使用一个语句MySQL INSERT SELECT语句引发错误1062:键2的重复项“”,mysql,select,insert,reverse,Mysql,Select,Insert,Reverse,基本上,我有一个名为document的表,其中包含一个名为host的列。我已经创建了另一个名为rev_host的列,我只想在主机和rev_主机之间存储反向字符串。例如,如果主机值为www.cmu.edu,我想将ude.umc.www保存到rev_主机。然后我使用一个语句 INSERT INTO document (rev_host) SELECT REVERSE(host) from document; 此语句引发1062错误: ERROR 1062 (23000): Duplicate en
INSERT INTO document (rev_host) SELECT REVERSE(host) from document;
此语句引发1062错误:
ERROR 1062 (23000): Duplicate entry '' for key 2
这句话有什么问题?如果我不能以这种方式插入。执行此插入的正确方法是什么 查询会在表中插入大量新行,从而引入重复键。如果只想更新一列并保留以前的条目,请改用“更新”:
出于好奇,是否有什么特别禁止您使用基于原始“www.cmu.edu”的反向字符串,而不是使用不同的表?似乎如果转换总是一致的反转,那么您可以在需要时通过反转来节省额外的存储和插入。这将遵循“不存储您可以计算的内容”的做法。实际上,我就快到了,我使用了下面的语句:updatedocumentset rev_host=selectreverseehost FROM document;但是有个语法错误。你的答案真的有用!
UPDATE document SET rev_host=REVERSE(host);