Добавьте строку, если элемент изменится, в противном случае просто обновите метку времени

#mysql #sql #sql-update #sql-insert

Вопрос:

У меня есть база данных «mySetup» с такими элементами, как

 row_id      INTEGER UNIQUE NOT NULL AUTO_INCREMENT,
cpu_id      VARCHAR(40) NOT NULL COLLATE utf8_unicode_ci,
version     VARCHAR(20) NOT NULL COLLATE utf8_unicode_ci,
json        VARCHAR(4000) COLLATE utf8_unicode_ci,
timestamp   DATETIME DEFAULT CURRENT_TIMESTAMP
 

Теперь я хочу добавить новую строку, только если «версия» или «json» отличается от последней записи для данного «cpu_id». Например, у меня есть эти строки:

 1       cpu_aaa     Ver_2.00    json_{'power':'123'}
2       cpu_aaa     Ver_2.00    json_{'power':'423'}
3       cpu_bbb     Ver_2.01    json_{'power':'100'}
4       cpu_bbb     Ver_2.01    json_{'power':'unknown'}
 

Теперь у меня есть эти данные строки:
cpu_aaa Ver_2.00 json_{'power':'423'}

Поскольку у него та же версия и json, что и у последнего, используемого для cpu_aaa, я просто хочу обновить метку времени последней строки (проиндексированную как 2) до текущей.

В следующий раз я сяду в следующий ряд, как cpu_aaa Ver_2.00 json_{'power':'overload'}

Поскольку json изменен, мне нужно добавить полную строку, поэтому я получу это:

 1       cpu_aaa     Ver_2.00    json_{'power':'123'}
2       cpu_aaa     Ver_2.00    json_{'power':'423'}
3       cpu_bbb     Ver_2.01    json_{'power':'100'}
4       cpu_bbb     Ver_2.01    json_{'power':'unknown'}
5       cpu_aaa     Ver_2.00    json_{'power':'overload'}
 

Возможно ли это только с одним запросом?