方式一
将 insert 关键字改为 REPLACE
,作用效果是对比索引字段,索引相同删除原有数据,再新增一条数据,如果新数据和原有的数据完全相同,删除原来数据,保存最新数据。
REPLACE INTO zcq.m_homework_correct_state (id, state, submit_time, correct_time)
VALUES ('0002d52c0d828a35cf13231e2added51', 1, '2021-09-14 12:28:53', '2021-09-14 12:28:53');
方式二
关键字 ON DUPLICATE KEY UPDATE
在原数据上进行修改不会删除原来数据可控制更新的字段(只想更新个别字段)
INSERT INTO zcq.m_homework_correct_state (id, state, submit_time, correct_time)
VALUES ('0002d52c0d828a35cf13231e2added56', 3, '2021-09-14 12:28:53', '2021-09-14 12:28:53')
ON DUPLICATE KEY UPDATE state= '3',
submit_time='2021-09-14 12:28:53';
如果是这种场景:数据存在时,把 state 增加 3(即传入的 state 值),可以利用 values(column)
方式传入:
INSERT INTO zcq.m_homework_correct_state (id, state, submit_time, correct_time)
VALUES ('0002d52c0d828a35cf13231e2added56', 3, '2021-09-14 12:28:53', '2021-09-14 12:28:53')
ON DUPLICATE KEY UPDATE state= state + values(state),
submit_time='2021-09-14 12:28:53';