MySQL “good” way to insert a row if not found, or update it if it is found

后端 未结 6 1535
小蘑菇
小蘑菇 2020-12-08 11:44

Very often, I want to run a query on one of my users where I want a row stored and associated with that user, in a 1-to-1 relationship. So let\'s say (this is just an arbit

6条回答
  •  广开言路
    2020-12-08 12:03

    From my other Stack Overflow answer:

    If you want to do this in a single statement, I would recommend using the INSERT ... ON DUPLICATE KEY UPDATE syntax, as follows:

    INSERT INTO table (id, someothervalue) VALUES (1, 'hi mom')
      ON DUPLICATE KEY UPDATE someothervalue = 'hi mom';
    

    The initial INSERT statement will execute if there is no existing record with the specified key value (either primary key or unique). If a record already exists, the following UPDATE statement (someothervalue = 3) is executed.

    This is supported in all versions of MySQL. For more info, see the MySQL Reference Manual page for INSERT ... ON DUPLICATE KEY UPDATE

提交回复
热议问题