OHLÁLÁ OHLÁLÁ - 1 year ago 168
MySQL Question

MySql Table Insert if not exist otherwise update

UPDATE AggregatedData SET datenum="734152.979166667",
Timestamp="2010-01-14 23:30:00.000" WHERE datenum="734152.979166667";

It works if the
exists, but I want to insert this data as a new row if the
does not exist.


the datenum is unique but that's not the primary key

Answer Source

Jai is correct that you should use INSERT ... ON DUPLICATE KEY UPDATE.

Note that you do not need to include datenum in the update clause since it's the unique key, so it should not change. You do need to include all of the other columns from your table. You can use the VALUES() function to make sure the proper values are used when updating the other columns.

Here is your update re-written using the proper INSERT ... ON DUPLICATE KEY UPDATE syntax for MySQL:

INSERT INTO AggregatedData (datenum,Timestamp)
VALUES ("734152.979166667","2010-01-14 23:30:00.000")
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download