高手指点: 有什么好办法?????
select po_order_b.pk_arrvstoorg pk_arrvstoorg,
       po_order.cvendorbaseid cvendorbaseid,
       bd_invbasdoc.pk_invcl pk_invcl,
       po_order.vdef7 vdef7,
       sum(po_order_b.nordernum) nordernum,
       sum(po_order_b.naccumstorenum) naccumstorenum
  from po_order_b po_order_b, po_order po_order, bd_invbasdoc bd_invbasdoc
 where ((po_order_b.corderid in ('1001A810000000009QDS', '1001A810000000009QDW', '1001A810000000009QE0', '1001A810000000009QE8', '1001A810000000009QF8', '1001A810000000009QFC', '1001A810000000009QG1', '1001A810000000009QG5', , '1001A810000000009RP2', '1001A810000000009RRM', '1001A810000000009RRV', ...................................300个项

解决方案 »

  1.   

    把这些数据写到一个临时表里面的某字段下,然后:
    select po_order_b.pk_arrvstoorg pk_arrvstoorg, 
          po_order.cvendorbaseid cvendorbaseid, 
          bd_invbasdoc.pk_invcl pk_invcl, 
          po_order.vdef7 vdef7, 
          sum(po_order_b.nordernum) nordernum, 
          sum(po_order_b.naccumstorenum) naccumstorenum 
      from po_order_b po_order_b, po_order po_order, bd_invbasdoc bd_invbasdoc 
    where po_order_b.corderid in (select 临时字段 from 临时表)
      

  2.   

    Regular expression?  I don't know. Just guess...
      

  3.   

    为什么会出现这种情况呢,流程是怎么样的要缩短的话,可以用po_order_b.corderid like '1001A810000000009___' and 后几位 in ('...','...',...)
      

  4.   

    select po_order_b.pk_arrvstoorg pk_arrvstoorg, 
          po_order.cvendorbaseid cvendorbaseid, 
          bd_invbasdoc.pk_invcl pk_invcl, 
          po_order.vdef7 vdef7, 
          sum(po_order_b.nordernum) nordernum, 
          sum(po_order_b.naccumstorenum) naccumstorenum 
      from po_order_b po_order_b, po_order po_order, bd_invbasdoc bd_invbasdoc 
    where po_order_b.corderid exists (...).... 
      

  5.   

    不能确定oracle以外的数据库是否支持
      

  6.   

    嗯,创建个表然后 select * from ??? where >>> in (select * from """)
      

  7.   

    使用子查询的话 效率会很慢的 可以在(JAVA)程序里面做啊 使用StringBuffer去循环拼字符串。
      

  8.   

    就是这样说的呀,对于这样的问题,是导入数据时引起的,可以用exel表格式化,最后一次性导入到一个临时表中,可以用这样的方法查询得到呀
      

  9.   

    没有必要吧。我以前也遇到这种情况过,大概有1000多个ID。
    我的方法是把 id in ('1000','1001'...) 变成 where (id='1000' or id='1001' or .....)
      

  10.   

      sb,没看到  
    '1001A810000000009QDS', '1001A810000000009QDW', '1001A810000000009QE0', '1001A810000000009QE8', 
    '1001A810000000009QF8', '1001A810000000009QFC', '1001A810000000009QG1', '1001A810000000009QG5', 
    '1001A810000000009RP2', '1001A810000000009RRM', '1001A810000000009RRV',  这些数据的特点吗?'1001A810000000009'都是一样的啊。你可以:
    select po_order_b.pk_arrvstoorg pk_arrvstoorg, 
          po_order.cvendorbaseid cvendorbaseid, 
          bd_invbasdoc.pk_invcl pk_invcl, 
          po_order.vdef7 vdef7, 
          sum(po_order_b.nordernum) nordernum, 
          sum(po_order_b.naccumstorenum) naccumstorenum 
      from po_order_b po_order_b, po_order po_order, bd_invbasdoc bd_invbasdoc 
    where ((po_order_b.corderid like ('1001A810000000009_ _ _')