数据库表里有这样的数据
id  issue
1   200803
2   200804
3   200805
4   200806现在我要查询200805-200807 这几个是否在数据库里存在~该怎么写才好
我是用最笨的方法 循环for(int i=200805;i<=200807;i++){
   dao.search(i);
}结果就是给老大批了 效率低 请教各位帮我解决下 可以用一条sql解决最好 重要的是效率!!

解决方案 »

  1.   

    select count(*) from yourtable where issue>200804 and issue<200808
      

  2.   

    id  issue
    1  200803
    2  200804
    3  200805
    4  200806 LZ的意思是说如果时间段是200805-200807那说明这里面的记录不符合要求吗?
      

  3.   

    引用lz " 主要就是查这个时间段中我数据库对应的是否有记录 有我会做某些事~没有我又会做另外的事"我看你的执行代码是个循环,可以考虑 做个标记什么的, 有数据就跳出循环(break),去做有数据作的事,肯能会快一些,  还有就是 (dao.search(i);)search()方法可以考虑改成两个参数,不行就重写也行,
    search(startDate,endDate); 这样也能快一些
      

  4.   

    if exiset(select count(*) from yourtable where issue>200804 and issue <200808 )
    begin:
      

  5.   

    7楼的兄弟 多谢 我现在就这样做的 只要查到我就抛了异常 不过还是不符合我们老大的要求 说效率低 用一个sql就解决~可我没想明白 请各位多指点 谢谢~
      

  6.   

    if exiset(select count(*) from yourtable where issue>200804 and issue <200808 ) 
    begin
    **********you want to do**********
    end   
      else   
    **********you want to do**********
      

  7.   

    hibernate的hql语句String sql=“select id,issue from mytable where issue=:issue”;
    for(int i=200805;i<=200807;i++){
       q.setInteger("issur",i);
    }
      

  8.   

    那就用 search(startDate,endDate);
    调用1楼写的方法
    sql 可能 要看issue是什么类型的 如果是number 就像下面这写
    select count(*) from yourtable where issue>to_number(startDate)and issue <to_number(endDate)如果是char型的就像下面这写
    select count(*) from yourtable where issue>to_char(startDate)and issue <to_char(endDate)
    应该能行吧
      

  9.   

    是什么类型 应该是根据你数据库中issue的类型来确定的 不是根据你传的值来确定的。