select name from (select name ,b-a y from test)d
        where d.y=(select MIN(b-a) from d);

解决方案 »

  1.   

    select name from A where (Length2-Length1) in (select min(Length2-Length1) from A);
      

  2.   

    select * from (select row_number() over(order by abs(Length2-Length1)) rm,name from a) where rm=1;
      

  3.   

    NO1,说错误位于第二行,表或视图不存在;
    NO2,OK,能查处B-A的距离最小值的行的NAME。但距离最小却应该是绝对值最小。
    NO3,THE BEST ONE!!!但是请问楼主这种语法在哪里可以查到,有没有什么资料可以学习,谢谢,真的很管用也!!!
      

  4.   

    nicholaz(九思·逢尤) 同志的只需加一个函数就OK,
    select name from A where (Length2-Length1) in (select min(abs(Length2-Length1))from A);
      

  5.   

    楼主写错了吧?
    是不是这样:
    select name from A where abs(Length2-Length1) in (select min(abs(Length2-Length1))from A);
    我还有一种写法
    select name from (select name,min(abs(Length2-Length1))from A) where rownum = 1;
      

  6.   

    NO,没错的,你的出现错误出在第一行,非单组分组函数。呵呵,在SQL*PLUS里试试旧知道了。
      

  7.   

    select name from table_a where (len1-len2)=(select min(len1-len2) from table_a)
      

  8.   

    select name from table_name where abs(length1-length2)=(select min(abs(length1-length2)) from table_name);
      

  9.   

    select name from 
    (select (length1-length2) dis,name from table_name
     group by (length1-length2),name)
    where rownum<2;
    order by 在低版本的oracle可能不支持