gpt4 book ai didi

MySQL 错误代码 : 1062. 键 '0' 的重复条目 'nombre_UNIQUE'

转载 作者:行者123 更新时间:2023-11-29 05:55:56 28 4
gpt4 key购买 nike

我正在尝试创建一个 SQL 查询以将行从一个表插入和更新到另一个表,这些表分别是 tmpTesttesttest 上的某些列被设置为 UNIQUE,因此当来自 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 是 'UNIQUE' 列。

案例一:

`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”。插入第二行。

案例二:

`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。

例如

mysql> SELECT 'Dulcie' = 'Dulcie' AND 'Sheree' = 'Lilibeth' AND 43 = 34;
+-----------------------------------------------------------+
| 'Dulcie' = 'Dulcie' AND 'Sheree' = 'Lilibeth' AND 43 = 34 |
+-----------------------------------------------------------+
| 0 |
+-----------------------------------------------------------+
1 row in set (0.00 sec)

我在这里“猜测”是因为我得到了

"Error Data truncation: Truncated incorrect DOUBLE value: 'Dulcie'" 

当我尝试运行您的代码时,我无法复制您的结果。

当您再次运行它时,您将已经拥有 0 作为值,这将导致 test 上的 UNIQUE 约束失败。

用逗号替换 AND,你会得到你想要的结果

http://sqlfiddle.com/#!9/26d8d2/1

关于MySQL 错误代码 : 1062. 键 '0' 的重复条目 'nombre_UNIQUE',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49387767/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com