#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'}
Возможно ли это только с одним запросом?