在PHPMyAdmin SQL窗口中尝试以下MySQL时,它会抛出错误
INSERT INTO `stationlist`(`ID`, `Comd`, `Stn`, `Pin`, `Location`)
VALUES (Null, 'aaa','bb',11,'ddd')
ON DUPLICATE KEY UPDATE (Comd = 'abcd', Stn ='AFSB', Pin = 999, Location ='Delhi')
"Unregcognised keyword"
和所有后续令牌的错误讯息为ON DUPLICATE KEY
。
MySQL中是否允许ON DUPLICATE KEY
这样的声明?
答案 0 :(得分:1)
删除括号:
INSERT INTO `stationlist`(`ID`, `Comd_ID`, `Stn`, `Pin`, `Location`)
VALUES (Null, 'aa','bb',11,'ddd')
ON DUPLICATE KEY UPDATE `Comd_ID` = 'xxx', `Stn` ='AFSB', `Pin` = 999, `Location` ='Delhi'
同时建议省略auto-increment
列,而不是将NULL
传递给它。
INSERT INTO `stationlist`(`Comd_ID`, `Stn`, `Pin`, `Location`)
VALUES ('aa','bb',11,'ddd')
ON DUPLICATE KEY UPDATE `Comd_ID` = 'xxx', `Stn` ='AFSB', `Pin` = 999, `Location` ='Delhi'
注意:
我不知道你为什么要设置Comd_ID = 'xxx'
。如果您需要一些帮助来正确设置值,请编辑您的问题并解释您想要的内容。
您试图避免重复的是什么价值? ON DUPLICATE KEY UPDATE
子句用于具有唯一索引的列。通常,应避免对具有多个唯一索引的表使用ON DUPLICATE KEY UPDATE
子句。
答案 1 :(得分:0)
我使用了替代方法,我使用SQL INSERT插入新记录和SQL UPDATE来更新现有记录。
答案 2 :(得分:0)
删除括号:如果您将运行此查询 工作。但是会显示语法错误。例如:
INSERT INTO stationlist (Comd,Stn,Pin,Location)
VALUES ('aaa','bb',11,'ddd') ON DUPLICATE KEY
UPDATE Comd = 'abcd'
,Stn = 'AFSB'
,Pin = 999
,Location = 'Delhi'
对我来说,我的查询如下:
INSERT INTO dragdrop (id,TEXT,listorder)
VALUES (7,'HTML',6) ON DUPLICATE KEY
UPDATE TEXT = 'JSON' ,listorder = 7
有关语法突出显示错误的参考将在此phpmyadmin issue上进行跟踪。