正确的 INSERT .. ON DUPLICATE KEY 语法?

Posted

技术标签:

【中文标题】正确的 INSERT .. ON DUPLICATE KEY 语法?【英文标题】:Correct INSERT .. ON DUPLICATE KEY syntax? 【发布时间】:2011-09-20 14:48:54 【问题描述】:

如何检查表上是否已经存在特定的主键(字符串变量),如果没有插入新记录,否则只需使用 c# 用新值更新现有记录?

我试过了

mysqlCommand cmd2 = new MySqlCommand("INSERT INTO mapdisplay    
    (ID,Distance) 
  VALUES 
    (@r,@c,) 
  ON DUPLICATE KEY UPDATE mapdisplay   
    (Distance) 
  VALUES 
    (@c,)", conn);

但我认为语法错误。

【问题讨论】:

你为什么要破坏你自己的帖子? 【参考方案1】:

INSERT ... ON DUPLICATE KEY UPDATE ...

【讨论】:

【参考方案2】:
INSERT INTO mapdisplay    
  (HexID,FlightNo,Lat,Lon,Alt,Course,Groundspeed,Verticalrate,Distance) 
VALUES (@r,@c,@f,@t,@w,@q,@u,@e,@y)  
ON DUPLICATE KEY UPDATE
  FlightNo = @c
  ,Lat = @f
  ,Lon = @t
  ,Alt = @w
  ,Course = @q
  ,Groundspeed = @u
  ,Verticalrate = @e
  ,Distance = @y;

查看此链接中的最后一个示例:http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

【讨论】:

以上是关于正确的 INSERT .. ON DUPLICATE KEY 语法?的主要内容,如果未能解决你的问题,请参考以下文章

MongoDB - ON DUPLICATE KEY ..UPDATE 行为

无法插入显式值,因为 IDENTITY_INSERT 为 OFF,但无法将 IDENTITY_INSERT 设置为 ON,因为它已经为 ON

set IDENTITY_INSERT on 和 off 的设置

MySQL INSERT ON DUPLICATE KEY UPDATE

INSERT INTO .. ON DUPLICATE KEY更新多行记录

Postgres INSERT ON CONFLICT DO UPDATE 与 INSERT 或 UPDATE