同张表中,如何通过判断一个字段的值,给表中另一个字段赋值

时间:2022-09-03 15:06:12
如题,表中的数据都是通过查询放到minList里面了,我要通过对表中人数(rs)的判断来对同张表中的zcxi字段赋值,rs=1,zcxj=0;
rs<=9&&rs>=2,zcxj=1;rs>=10.zcxj=2;
下面贴上代码:


public void executeManySql8(List<List<String>> FindList8) throws SQLException {
    Connection con = Oracle_con.getConnection();
    con.setAutoCommit(false);
    Statement stat = null;
    PreparedStatement pst = (PreparedStatement) con
            .prepareStatement("insert into zcaj (CASEID,DJH,AH,BDZE,DJRQ,LARQ,KTRQ,JARQ,EXP_END_DT,JTAJ,JAFS,TJJG,BSLRQ,RS) values  (?,?,?,?,?,?,?,?,?,?,?,?,?,?)");
    for (List<String> minList: FindList8) {
        for(int i=0;i<minList.size();i++){
        
            pst.setString(i+1, minList.get(i));
        }
        // 把一个SQL命令加入命令列表 list.add(PEOPLEID);
        pst.addBatch();
    }
    // 执行批量更新
    pst.executeBatch();
    // 语句执行完毕,提交本事务
    con.commit();
    pst.close();
    con.close();//一定要记住关闭连接,不然mysql回应为too many connection自我保护而断开。
}


希望大神帮我一下。谢谢谢谢

9 个解决方案

#1


这个很简单啊
1,查询。
2,赋值更新。
应该也可以直接通过一个sql完成的。

#2


update...where语句不能实现么???

#3


for(int i=0;i<minList.size();i++){
         if(minList.get(i).rs<=9&&minList.get(i).rs>=2)
                        minList.get(i).zcxj=1;
                  else if(rs>=10)
                            minList.get(i).zcxj=2;
                   else   minList.get(i).zcxj=null;
        }

#4


如果数据量大的话,可以考虑存储过程,效率比较高。

#5


update t_data set field1=(case when type='A' then 'X' else filed1 end)
,filed2=(case when type='B' then 'X' else filed2 end)
where xxx

#6


zcxj 是啥?干啥用的

#7


用case when 应该可以吧,你可以百度下case when的具体用法

#8


加一个触发器,判断这个字段值后更新另一个字段

#9


引用 8 楼 xwn_2016 的回复:
加一个触发器,判断这个字段值后更新另一个字段

建议不要用触发器,这种还是直接用  update  表名 set 字段 = 值  where  条件

#1


这个很简单啊
1,查询。
2,赋值更新。
应该也可以直接通过一个sql完成的。

#2


update...where语句不能实现么???

#3


for(int i=0;i<minList.size();i++){
         if(minList.get(i).rs<=9&&minList.get(i).rs>=2)
                        minList.get(i).zcxj=1;
                  else if(rs>=10)
                            minList.get(i).zcxj=2;
                   else   minList.get(i).zcxj=null;
        }

#4


如果数据量大的话,可以考虑存储过程,效率比较高。

#5


update t_data set field1=(case when type='A' then 'X' else filed1 end)
,filed2=(case when type='B' then 'X' else filed2 end)
where xxx

#6


zcxj 是啥?干啥用的

#7


用case when 应该可以吧,你可以百度下case when的具体用法

#8


加一个触发器,判断这个字段值后更新另一个字段

#9


引用 8 楼 xwn_2016 的回复:
加一个触发器,判断这个字段值后更新另一个字段

建议不要用触发器,这种还是直接用  update  表名 set 字段 = 值  where  条件