在 table 中插入新值并删除旧值

Insert the newset value in a table and drop the old ones

我有一个方法可以在 table 中为机器保存一些记录。但是,我可能会在一天内意外多次插入同一台机器的记录,所以我想在这一天保存最新的插入并删除旧的。我想到了一个解决方案:

String sq = "SELECT date, idMachine "
          + "FROM MACHINES_RECORDS WHERE date = ? AND idMachine = ?";

 try {       
        Class.forName(typeDB);
        c = DriverManager.getConnection(path);            
        stm = c.prepareStatement(sq);  
        ResultSet rs = stm.executeQuery();

        if (rs.next()) {                
           do {
                 //call an another method to drop this value
               } while(rs.next());
         }else {
               //call an another method to insert this value
         }       
        }catch (SQLException e) {
            System.out.println(e.getMessage());
        } finally {
            if (stm != null)
                stm.close();
            if (c != null)
        c.close();
  }

是否有任何better/smartest解决方案,以便我可以用相同的方法完成所有这些操作?

dateidmachine 上使用唯一索引(可能是主键),您将使用 INSERT ... ON DUPLICATE KEY UPDATE,以便在该机器上没有条目时插入天或用新数据更新现有记录。

insert into machines_records
  (machineid, date, data)
values
  (@id, @date, @data)
on duplicate key update data = @data;

编辑: 我看到你删除了 MySQL 标签。所以你想要 SQLite 的答案。在 SQLite 中你会使用 INSERT OR REPLACE:

insert or replace into machines_records
  (machineid, date, data)
values
  (@id, @date, @data);