例如:
info表中的记录:  编号 姓名 金额
1 张三 17
2 李四 210
3 张三 2
4 李四 12
5 张三 12用户张三,使用在一次购物中使用了金额:22元
那么,在程序中要把用户张三所在的info表中扣除22元。该功能是使用j2ee的实现的,
即:从第一条开始扣,第一条不足就扣第2条,依次类推一直到扣完这22块。,
编号 姓名 金额
1 张三 17       -17(扣了17元)
2 李四 210
3 张三 2        -2  (扣了2元)
4 李四 12
5 张三 12       -3  (扣了3元)  总扣了22元, 结果是:
编号 姓名 金额
1 张三 0
2 李四 210
3 张三 0
4 李四 12
5 张三 9类似于下面SQL的业务逻辑,如果在JAVA EE中,怎样实现declare @info table (编号 int,姓名 varchar(4),金额 int)
 insert into @info 
select 1,'张三',17 union all 
select 2,'李四',210 union all 
select 3,'张三',2 union all 
select 4,'李四',12 union all 
select 5,'张三',12 
--张三 消费 22 
declare @i int;set @i=22 
update @info set @i=case when @i<0 then 0 else @i-金额 end, 
金额=case when @i>0 then 0 when @i=0 then 金额 else -@i end 
where 姓名='张三' select * from @info
 --结果如下: 
/* 编号 姓名 金额 
1 张三 0 
2 李四 210 
3 张三 0 
4 李四 12 
5 张三 9 
*/请教在JAVA怎样实现,请大家赐教,感谢.

解决方案 »

  1.   

    查书属于张三的List,根据数额进行判断更新,,LZ还想要什么思路?
      

  2.   

    跟一楼一样,先查出张三的list,定义变量张三购物的金额,循环得到张三的金额,购物的金额-list的金额,如果第一条是整数,则将张三的第一条数据的金额update 0,第二条同理,如果小于0则update 该条张三的金额的绝对值。
      

  3.   

    int 购物金额=22;
    List<user> userList=得到张三的list;
    for(user user:userList){
          
       if(购物金额-user.get金额>0){
           //update 该条记录的金额为0
           购物金额=22-user.get金额;
       }else{
           //update 该条记录的金额为 :Math.abs(购物金额);
       }
    }
      

  4.   

     if(购物金额-user.get金额>0){
      //update 该条记录的金额为0
      购物金额= 购物金额-user.get金额;
      }else{
       购物金额= 购物金额-user.get金额;
      //update 该条记录的金额为 :Math.abs(购物金额);
      }
      

  5.   


    import java.util.ArrayList;
    import java.util.List;/*
     1 张三 17
     2 李四 210
     3 张三 2
     4 李四 12
     5 张三 12
     */
    public class Test {
        public static void main(String[] args) {
            List<Customer> cs = new ArrayList<Customer>();
            cs.add(new Customer("张三", 17));
            cs.add(new Customer("李四", 210));
            cs.add(new Customer("张三", 2));
            cs.add(new Customer("李四", 12));
            cs.add(new Customer("张三", 12));        for (Customer c : cs) {
                System.out.printf("Name: %s, Balance: %s\n", c.getName(), c.getBalance());
            }        Customer paidCustomer = new Customer("张三", 22);        // 看看钱是否够付款
            double sum = 0;
            for (Customer c : cs) {
                if (c.getName().equals(paidCustomer.getName())) {
                    sum += c.getBalance();
                }
            }
            if (sum < paidCustomer.getBalance()) {
                System.out.println("帐户里的钱不够付款");
                return;
            }        // 付款
            for (Customer c : cs) {
                if (paidCustomer.getName().equals(c.getName()) && paidCustomer.getBalance() > 0) {
                    if (c.getBalance() > paidCustomer.getBalance()) {
                        c.setBalance(c.getBalance() - paidCustomer.getBalance());
                        paidCustomer.setBalance(0);
                    } else {
                        paidCustomer.setBalance(paidCustomer.getBalance() - c.getBalance());
                        c.setBalance(0);
                    }
                }
            }        System.out.println();
            for (Customer c : cs) {
                System.out.printf("Name: %s, Balance: %s\n", c.getName(), c.getBalance());
            }
        }
    }class Customer {
        private String name;
        private double balance;    public Customer(String name, double balance) {
            this.name = name;
            this.balance = balance;
        }    public String getName() {
            return name;
        }    public void setName(String name) {
            this.name = name;
        }    public double getBalance() {
            return balance;
        }    public void setBalance(double balance) {
            this.balance = balance;
        }
    }
      

  6.   

    比如有个List<info>
    int money=0;
    int sum=0;//用来保存已经遍历的记录金额总和;
    List <Integer> id=new ArrayList();//保存你要更新的id
    //遍历张三记录
    int money=0;//让最后一个id金额为money
    for(int i=0;i<list.size();i++){
     sum+=list.get(i).金额;
     id.add(list.get(i).getId);
     if(sum-22>0){
      money=sum-22;//修改最后id名字张三金额为money,其他记录金额为0;
       break;
     }
    }这里将id为id.get(id.size()-1);金额修改为money;其他为0‘;
      

  7.   


    更新第一条数据的金额update 0在那里写? 条件满足后,更新SQL又怎样写?