我有一个项目,每周我都会导入几个包含不正确数据的大型数据集,例如重复的员工 ID,它们不应该重复。为了标记重复项,我尝试了以下代码:
ALTER TABLE AccountDuplicates
ADD UNIQUE INDEX EmployeeID (EmployeeID);
INSERT INTO AccountDuplicates
SELECT
EmployeeID,
FirstName,
LastName
FROM AccountsWork
ON DUPLICATE KEY UPDATE
EmployeeID = CONCAT(VALUES(EmployeeID), '*');
INSERT 语句给了我错误,我看不出我做错了什么:
[42000][1064] You have an error in your SQL syntax; check the manual that correspondsto your MySQL server version for the right syntax to use near 'FROM EAD_UserAccountsWork
ON DUPLICATE KEY UPDATE EmployeeID = CONCAT(VALUES(E' at line 36
如果相关,我在 OS X 10.11.4、INNODB 引擎和 mysql_mode = '' 上运行 MySQL 5.7.12。我的目的是识别重复的 ID,以便我可以将它们转发给适当的 DBA 进行更正。
更新:我已将数据库默认设置如下:
[client]
default-character-set = utf8mb4
[mysqld]
sql_mode=''
character-set-client-handshake = FALSE
character-set-server = utf8mb4
collation-server = utf8mb4_unicode_ci
[mysql]
default-character-set = utf8mb4