INSM的PHPMyAdmin抛出错误... ON DUPLICATE KEY UPDATE

时间:2018-01-18 15:57:07

标签: mysql duplicates key

在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这样的声明?

3 个答案:

答案 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)

要遵循的步骤

  1. 删除括号:如果您将运行此查询 工作。但是会显示语法错误。例如:

    INSERT INTO stationlist (Comd,Stn,Pin,Location)
        VALUES ('aaa','bb',11,'ddd') ON DUPLICATE KEY
    
    UPDATE Comd = 'abcd'
        ,Stn = 'AFSB'
        ,Pin = 999
        ,Location = 'Delhi'
    
  2. 对我来说,我的查询如下:

    INSERT INTO dragdrop (id,TEXT,listorder)
        VALUES (7,'HTML',6) ON DUPLICATE KEY
    
    UPDATE TEXT = 'JSON' ,listorder = 7
    
  3. 有关语法突出显示错误的参考将在此phpmyadmin issue上进行跟踪。