批量更新问题

传参如下
[
{“id”:1, “name”:”a”},
{“id”:2, “name”:”b”},
{“id”:3, “name”:”c”}
]
根据每条数据的id修改name的值。如何操作?

最佳答案

case when mysql 本身支持首选推荐

8个月前 评论
kis龍 8个月前
小手冰凉 (楼主) 8个月前
讨论数量: 13

我知道是 只能循环 一条一条更新

==================

更新

后来想了想, 查询的时候使用 case when 进行分组统计, 更新的时候应该也是可以的,缺点是麻烦,需要拼接 sql 语句。

示例

update t set code = (
    case when id = 3207 then 'aaa'
        when id = 3208 then 'bbb'
        when id = 3209 then 'ccc'
    end
)  where id in (3207,3208,3209);
select * from t where id in (3207,3208,3209);
1年前 评论
xiaopi

可以使用mysql的insert for upsert语句 INSERT INTO test (id,name) VALUES(1,'a'),(2,'b'),(3,'c') ON DUPLICATE KEY UPDATE name=VALUES(name); 意思是批量插入三个元素,如果有重复的,那就更新name字段。相当于批量更新了 前提必须是:id是主键或者建立了唯一索引

1年前 评论
小手冰凉 (楼主) 1年前
junior_lx 9个月前
xiaopi

这是mysql层面的语句,你可以找下java对应的生成方法

1年前 评论

这不是JSON对象吗?您可以使用以下方法来根据每条数据的ID修改名称值: 首先,您需要将数据加载到一个变量中。在这种情况下,数据是一个包含三个字典的列表,每个字典代表一个数据项。 data = [ {"id": 1, "name": "a"}, {"id": 2, "name": "b"}, {"id": 3, "name": "c"}] 然后,您可以遍历数据,并使用条件语句检查每个数据项的ID。如果ID与您要修改的ID匹配,则将该数据项的名称更改为新值。 例如,要将ID为1的名称更改为“new_a”,可以执行以下操作: for item in data: if item["id"] == 1: item["name"] = "new_a" 如果您需要对多个数据项进行更改,您可以将条件语句嵌套在一个循环中,或将其封装在一个函数中以便重用。 下面是一个完整的示例,它将ID为2和3的名称更改为“new_b”和“new_c”: data = [ {"id": 1, "name": "a"}, {"id": 2, "name": "b"}, {"id": 3, "name": "c"} ]

def modify_name(data, id, new_name): for item in data: if item["id"] == id: item["name"] = new_name

modify_name(data, 2, "new_b") modify_name(data, 3, "new_c")

print(data)

1年前 评论
小手冰凉 (楼主) 1年前
    // 定义要传入的数据
    List<Map<String, Object>> data = new ArrayList<>();
    Map<String, Object> item1 = new HashMap<>();
    item1.put("id", 1);
    item1.put("name", "a");
    data.add(item1);

    Map<String, Object> item2 = new HashMap<>();
    item2.put("id", 2);
    item2.put("name", "b");
    data.add(item2);

    Map<String, Object> item3 = new HashMap<>();
    item3.put("id", 3);
    item3.put("name", "c");
    data.add(item3);

    // 遍历每个元素
    for (Map<String, Object> item : data) {
      // 根据 id 值修改 name 的值
      switch ((int) item.get("id")) {
        case 1:
          item.put("name", "newA");
          break;
        case 2:
          item.put("name", "newB");
          break;
        case 3:
          item.put("name", "newC");
          break;
        default:
          break;
      }
    }

    System.out.println(data); // 输出修改后的数据
  }
1年前 评论

update case when

11个月前 评论

在sql中可以这么实现 UPDATE your_table_name SET name = CASE WHEN id = 1 THEN 'new_a' WHEN id = 2 THEN 'new_b' WHEN id = 3 THEN 'new_c' END WHERE id IN (1, 2, 3); 但是在JAVA中只能是循环更新

9个月前 评论

case when mysql 本身支持首选推荐

8个月前 评论
kis龍 8个月前
小手冰凉 (楼主) 8个月前

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!