Insert into a MySQL table or update if exists

前端 未结 11 2671
再見小時候
再見小時候 2020-11-21 04:27

I want to add a row to a database table, but if a row exists with the same unique key I want to update the row.

For example:



        
11条回答
  •  太阳男子
    2020-11-21 05:11

    In case that you wanted to make a non-primary fields as criteria/condition for ON DUPLICATE, you can make a UNIQUE INDEX key on that table to trigger the DUPLICATE.

    ALTER TABLE `table` ADD UNIQUE `unique_index`(`name`);
    

    And in case you want to combine two fields to make it unique on the table, you can achieve this by adding more on the last parameter.

    ALTER TABLE `table` ADD UNIQUE `unique_index`(`name`, `age`);
    

    Note, just make sure to delete first all the data that has the same name and age value across the other rows.

    DELETE table FROM table AS a, table AS b WHERE a.id < b.id 
    AND a.name <=> b.name AND a.age <=> b.age;
    

    After that, it should trigger the ON DUPLICATE event.

    INSERT INTO table (id, name, age) VALUES(1, "A", 19) ON DUPLICATE KEY UPDATE    
    name = VALUES(name), age = VALUES(age)
    

提交回复
热议问题