方式一

将 insert 关键字改为 REPLACE,作用效果是对比索引字段,索引相同删除原有数据,再新增一条数据,如果新数据和原有的数据完全相同,删除原来数据,保存最新数据。

  1. REPLACE INTO zcq.m_homework_correct_state (id, state, submit_time, correct_time)
  2. VALUES ('0002d52c0d828a35cf13231e2added51', 1, '2021-09-14 12:28:53', '2021-09-14 12:28:53');

方式二

关键字 ON DUPLICATE KEY UPDATE 在原数据上进行修改不会删除原来数据可控制更新的字段(只想更新个别字段)

  1. INSERT INTO zcq.m_homework_correct_state (id, state, submit_time, correct_time)
  2. VALUES ('0002d52c0d828a35cf13231e2added56', 3, '2021-09-14 12:28:53', '2021-09-14 12:28:53')
  3. ON DUPLICATE KEY UPDATE state= '3',
  4. submit_time='2021-09-14 12:28:53';

如果是这种场景:数据存在时,把 state 增加 3(即传入的 state 值),可以利用 values(column) 方式传入:

  1. INSERT INTO zcq.m_homework_correct_state (id, state, submit_time, correct_time)
  2. VALUES ('0002d52c0d828a35cf13231e2added56', 3, '2021-09-14 12:28:53', '2021-09-14 12:28:53')
  3. ON DUPLICATE KEY UPDATE state= state + values(state),
  4. submit_time='2021-09-14 12:28:53';

fe31629e152e59fc80177719530e2c4.png
cb95aa3af91db36e905978bb567b368.png