with 
 t1 as
 (
 select 'jones' as name,2975 as sal from dual
 union all
 select 'scott' as name,3000 as sal from dual
 union all
 select 'ford' as name,3000 as sal from dual
 union all
 select 'sakl' as name,2500 as sal from dual
 )
 select * from t1以上为数据,描述:查询工资最高的人
结果:
scott 3000
ford 3000工资最高的有两人.求sql  

解决方案 »

  1.   

     with 
     t1 as
     (
     select 'jones' as name,2975 as sal from dual
     union all
     select 'scott' as name,3000 as sal from dual
     union all
     select 'ford' as name,3000 as sal from dual
     union all
     select 'sakl' as name,2500 as sal from dual
     )
     select * from t1 where sal in (select max(sal) from t1)
    这样需要嵌套查询两次,有更好的办法吗,一次查询的
      

  2.   

    可不可以把in更改成not exsits  因为in的话不怎么好吧
      

  3.   

    像你这种很容易区分的子查询用IN和exist差别应该不是很大,不如在sal字段上建一个函数索引