SELECT e.index_id, e.name as index_name, e.code as index_code, e.unit_id, bm.time_type, bm.date_time, bm."value", bm.time_code, bm.actual_value, benchmarking_range, benchmarking_type FROM energy_index e LEFT JOIN benchmarking_management bm ON bm.index_id = e.index_id insert into benchmarking_management (index_id, time_code, time_type, value, actual_value, date_time, benchmarking_range, benchmarking_type, create_time) select #{benchmarkingManagement.indexId}, #{benchmarkingManagement.timeCode}, #{benchmarkingManagement.timeType}, #{benchmarkingManagement.value,jdbcType = DOUBLE}, #{benchmarkingManagement.actualValue,jdbcType = DOUBLE}, #{benchmarkingManagement.dateTime}, #{benchmarkingManagement.benchmarkingRange}, #{benchmarkingManagement.benchmarkingType}, now() on conflict (index_id,time_code) do update set value = #{benchmarkingManagement.value, jdbcType = DOUBLE}, actual_value = #{benchmarkingManagement.actualValue, jdbcType = DOUBLE}, benchmarking_range=#{benchmarkingManagement.benchmarkingRange}, benchmarking_type=#{benchmarkingManagement.benchmarkingType}, update_time = now(); insert into benchmarking_management index_id, time_type, date_time, value, time_code, create_time, update_time, actual_value, benchmarking_range, benchmarking_type, #{indexId}, #{timeType}, #{dateTime}, #{value}, #{timeCode}, #{createTime}, #{updateTime}, #{actualValue}, #{benchmarkingRange}, #{benchmarkingType}, update benchmarking_management time_type = #{timeType}, date_time = #{dateTime}, value = #{value}, time_code = #{timeCode}, create_time = #{createTime}, update_time = #{updateTime}, actual_value = #{actualValue}, benchmarking_range = #{benchmarkingRange}, benchmarking_type = #{benchmarkingType}, where index_id = #{indexId} delete from benchmarking_management where index_id = #{indexId} delete from benchmarking_management where index_id in #{indexId}