MySQL错误代码:1062。重复输入';0';对于键';nombre#u UNIQUE';

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

我试图创建一个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.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'"