MySQL错误代码:1062。重复输入';0';对于键';nombre#u UNIQUE';
我试图创建一个SQL查询来插入和更新从一个表到另一个表的行,这些表分别是MySQL错误代码:1062。重复输入';0';对于键';nombre#u UNIQUE';,mysql,sql,Mysql,Sql,我试图创建一个SQL查询来插入和更新从一个表到另一个表的行,这些表分别是tmpTest和test。test上的某些列被设置为唯一,因此当tmpTest中的一个传入行在该列上具有相同的值时,它应该更新而不是插入 我的问题是: INSERT INTO `test` ( name,lastName,age ) SELECT tmp.name,tmp.lastName,tmp.age FROM `tmpTest` tmp ON DUPLICATE KEY UPDATE test.name = tmp
tmpTest
和test
。test
上的某些列被设置为唯一,因此当tmpTest
中的一个传入行在该列上具有相同的值时,它应该更新而不是插入
我的问题是:
INSERT INTO `test` ( name,lastName,age )
SELECT tmp.name,tmp.lastName,tmp.age FROM `tmpTest` tmp
ON DUPLICATE KEY UPDATE test.name = tmp.name AND test.lastName = tmp.lastName AND test.age = tmp.age ;
其中,name
是“唯一”列
案例1:
`tmpTest`:
name lastName age
Dulcie Sheree 43
Elvin Wes 21
`test`:
id name lastName age
1 Dulcie Lilibeth 34
2 Sophia Dora 67
4 Jillian Britton 21
resulting `test`:
id name lastName age
1 0 Lilibeth 34
2 Sophia Dora 67
4 Jillian Britton 21
10 Elvin Wes 21
第一行未更新,并使用“0”更改了名称字段。插入第二行
案例2:
`tmpTest`:
name lastName age
Dulcie Sheree 43
Elvin Wes 21
`test`:
id name lastName age
1 Dulcie Lilibeth 34
2 Sophia Dora 67
4 Jillian Britton 21
10 Elvin Wes 21
我得到的错误是:
Error Code: 1062. Duplicate entry '0' for key 'name_UNIQUE'
有什么建议吗?
谢谢 这里的问题是UPDATE语句中的一系列AND,它们应该是逗号',' 我猜MySQL正在计算表达式
'Dulcie' = 'Dulcie' AND 'Sheree' = 'Lilibeth' AND 43 = 34
当这些值中的任何一个与其对不匹配时得到0
e、 g
我在这里“猜测”,因为我
"Error Data truncation: Truncated incorrect DOUBLE value: 'Dulcie'"
当我尝试运行你的代码时,我不能复制你的结果
当您再次运行它时,您已经将0作为一个值,这将导致test
上的唯一约束失败
将ANDs替换为逗号,您将得到所需的结果
"Error Data truncation: Truncated incorrect DOUBLE value: 'Dulcie'"