如果值不同,则更新mysql行或创建尚未添加的新行

如果值不同,则更新mysql行或创建尚未添加的新行,mysql,Mysql,出于某种原因,我没有意识到这一点,我看不到这个具体问题在有两个条件的情况下得到回答。我想针对以下两种情况更新我的_表: 如果主键vin相同而价格不同。-或 如果没有vin,则只需创建新行 两个示例更新之前和之后的示例: 在这个示例中,vin 12345存在,因此价格是更新的,因为它不同,在另一个示例中,vin 55555不在表中,所以它被创建。MySql支持有条件的插入/更新-检查 MySql支持条件插入/更新检查 “在有两个条件的情况下,我看不到这个具体问题的答案”-这是因为实际上没有。。。

出于某种原因,我没有意识到这一点,我看不到这个具体问题在有两个条件的情况下得到回答。我想针对以下两种情况更新我的_表:

  • 如果主键vin相同而价格不同。-或
  • 如果没有vin,则只需创建新行
  • 两个示例更新之前和之后的示例:


    在这个示例中,vin 12345存在,因此价格是更新的,因为它不同,在另一个示例中,vin 55555不在表中,所以它被创建。

    MySql支持有条件的插入/更新-检查


    MySql支持条件插入/更新检查


    “在有两个条件的情况下,我看不到这个具体问题的答案”-这是因为实际上没有。。。除此之外,以相同的价格更新现有行不会造成太大伤害(除非您没有提到其他限制),它实际上不会发生,因为DBMS足够聪明,可以认识到这一点——看看文档中对受影响行值的描述……我可能走错了方向……“在有两个条件的情况下,我看不到这个特定问题的答案”——这是因为实际上没有。。。除此之外,以相同的价格更新现有行不会造成太大伤害(除非您没有提到其他限制),它实际上不会发生,因为DBMS足够聪明,可以识别这一点-看看文档中关于受影响行值的说明…我可能走错了方向…我的问题是,我只想在值与服务器值不同时更新,在您的情况下,它是说,只要用7777更新它,不管它在DB@MikeQ你认为那会造成什么实际伤害?再说一次,这不会真的发生。DBMS将识别出一行已经有了这个语句试图“更新”它的值,所以它只会说,“我们在这里没事,伙计,没什么要做的,让我们继续下一个”。。。那么你认为这里需要解决什么实际问题…?假设price=1234,在DB上是5678,在你的情况下,我会100%地用1234更新DB。。。。废话我想我现在意识到我的愚蠢。。。是的,我在这里做错了,你的答案是正确的,我想我需要一个日期组件来防止支票一直发生。。很抱歉浪费了人们的时间我的问题是,我只想在值与服务器值不同时更新,在您的情况下,它是说只需使用7777更新它,无论它在DB@MikeQ你认为那会造成什么实际伤害?再说一次,这不会真的发生。DBMS将识别出一行已经有了这个语句试图“更新”它的值,所以它只会说,“我们在这里没事,伙计,没什么要做的,让我们继续下一个”。。。那么你认为这里需要解决什么实际问题…?假设price=1234,在DB上是5678,在你的情况下,我会100%地用1234更新DB。。。。废话我想我现在意识到我的愚蠢。。。是的,我在这里做错了,你的答案是正确的,我想我需要一个日期组件来防止支票一直发生。。对不起,浪费了大家的时间
    INSERT INTO my_table (vin,price) VALUES (12345, 7777)
        ON DUPLICATE KEY UPDATE price=7777;