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
的值修改为数字的字符串就可以,汉字、字母等字符串就执行报错
@小手冰凉 下面这个我测试是可以执行