on duplicate key update问题请教
MySQL8.0,表结构如下:
CREATE TABLE sys_user
(
id
bigint NOT NULL AUTO_INCREMENT,
username
varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ‘’ COMMENT ‘用户名’,
password
varchar(1024) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT ‘’ COMMENT ‘密码’,
name
varchar(100) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT ‘’ COMMENT ‘姓名’,
mobile
varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT ‘’ COMMENT ‘手机号’,
PRIMARY KEY (id
) USING BTREE,
UNIQUE KEY idx_username
(username
) USING BTREE,
KEY idx_mobile
(mobile
) USING BTREE,
KEY idx_name
(name
) USING BTREE
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT=’用户信息表’;
插入一条数据:
INSERT INTO test
.sys_user
(id
, username
, password
, name
, mobile
) VALUES (191, ‘1709211986061925621’, ‘’, ‘梵蒂冈地方’, ‘10000000000’);
现在有个需求,批量导入用户的时候,如果新导入的数据,字段值不为空则更新数据库中已有的数据字段,更新字段name
的sql如下:
但是更新字段mobile
又是可以的:
我本来怀疑是字段name
和关键字有关系,把字段name
修改为name1
执行还是报错:
单独执行update语句又是可以的。
但是我把字段name1
的值修改为数字的字符串就可以,汉字、字母等字符串就执行报错
@小手冰凉 下面这个我测试是可以执行