数据库中的库存表(balance),此表想根据bar_code值修改BATCH_NUM,created_date,last_upd_date 三个字段的值,现寻求高手给一条sql语句将BATCH_NUM 字段值改成10(默认的是22);created_date,last_upd_date都获取系统当前时间;
附注:select t.*,t.rowid from balance 
         set t.batch_num = '10', t.created_date = sysdate, t.last_upd_date = sysdate
         where t.bar_code in ('')
BATCH_NUM还是需要手动修改;如果bar_code数量多的话,手动修改batch_num会很麻烦,现寻求sql语句能自动更新batch_num值22到10

解决方案 »

  1.   

    update balance set batch_num=10 , created_date = sysdate , last_upd_date = sysdate
    where bar_code in ('')  and batch_num = 22
      

  2.   

    如果更新所有的 batch_num 为 22 的记录:
    update balance 
    set batch_num = '10', created_date = sysdate, last_upd_date = sysdate 
    where batch_num = '22'
      

  3.   

    update balance set batch_num=10 , created_date = sysdate , last_upd_date = sysdate 
    where bar_code in ('')  楼主有别的需求吧,不然這100分花的不太值呀
      

  4.   


    select t.*,t.rowid from balance 
            set t.batch_num = '10', t.created_date = sysdate, t.last_upd_date = sysdate 
            where t.bar_code in ('') 这个sql是什么意思呀。
    其中的这个 t.bar_code in ('') 有些怪异哟。 
      

  5.   

    个人认为
    1。 t.bar_code in ('') 如果你是想表示barcode为空的话,请用t.bar_code is null2. IN 这个关键字少用, 因为它不会使用INDEX
      

  6.   

    楼主的意思是说根据bar_code后面的''里的取值自动修改表里的数据吗?还是说blanch表插入新数据时自动修改
    可以用触发器,当''里的取值有变动时,自动对blanch进行修改
    create trigger after_blanch_update
    after update of 
    on ....set t.batch_num = '10', t.created_date = sysdate, t.last_upd_date = sysdate 
            where t.bar_code in ('') 后面加上一个条件 and t.batch_num='22'
    避免造成重复修改