数据库的表table1如下:
id(varchar2)       value(varchar2)
1                          5
1                          6
1                          7
2                          3
2                          4
现在想查第二条记录,小弟的sql语句是这样的。select min(value) from table1 where id='1' and value>'5';但是这样查不到任何数据,求大神指导,谢谢~!数据库sql

解决方案 »

  1.   

    select t1.* from (select t.*,t.rownum tr from table1)t1 where tr=2;
      

  2.   

    子查询需要order by才行的,LZ的SQL应该可以啊,
    要不改成这样试试:
    select min(TO_NUMBER(value)) from table1 where TO_NUMBER(id)=1 and TO_NUMBER(value)>5; 
      

  3.   


    1楼的大神能解释下括号里面是什么意思么?小弟初学,看不太懂。还有就是可能我没说清楚,其实最终目的是为了查找比给定value值大的值中的最小值。比如说,
    id(varchar2)       value(varchar2)
     1                          5
     1                          7
     1                          9
     2                          3
     2                          4
    在id=1的情况下,如果我给定value值是5,比5大的value值有7和9,那么我想查的是value为7的这条记录,而不是9这条记录。不知道说明白没?求赐教,谢谢
      

  4.   


    谢谢,刚才试了下,改成to_number(value)>'5'就可以了,前面的字段没用to_number转化。刚才我也想过转成数字,但是又觉得没必要,所以就没试。多谢这位兄弟。估计是字段类型为varchar2的原因吧。还有个有趣的事,刚才自己在那试验,用max()和min()返回value的最大和最小值。结果大跌眼镜,返回的最大值是5,最小值是10.我都傻了,不晓得怎么回事
      

  5.   

    这种情况一般是和字符集的设置相关的,
    注意一下你的nls_sort和nls_territory、nls_language等的设置
      

  6.   

    引用 1 楼 czg1230 的回复:
    select t1.* from (select t.*,t.rownum tr from table1)t1 where tr=2;
    1楼的大神能解释下括号里面是什么意思么?小弟初学,看不太懂。还有就是可能我没说清楚,其实最终目的是为了查找比给定value值大的值中的最小值。比如说,
    id(varchar2)       value(varchar2)
     1                          5
     1                          7
     1                          9
     2                          3
     2                          4
    在id=1的情况下,如果我给定value值是5,比5大的value值有7和9,那么我想查的是value为7的这条记录,而不是9这条记录。不知道说明白没?求赐教,谢谢
    按顺序取出表中的数据并编号!