我现在有这么个SQL语句
Select A.amount,B.name,C.sex
From A,B,C
Where ......(此处略去一串where条件)现在得到的结果是
2 aa ss
2 bb dd
2 cc kk
1 ww ee
1 ww rr
1 rr oo
0 ee pp
0 pp ll
0 mm nn
但其实这不是我想要的结果,我想要的A.amount最大的那几行,比如这里就是A.amount=2的最上面三行。
请问该如何改进这个SQL查询语句呢?

解决方案 »

  1.   


    Select top 3 A.amount,B.name,C.sex
    From A,B,C
    Where ......
    order by A.AMOUNT desc
      

  2.   

    Select top 3 A.amount,B.name,C.sex
    From A,B,C
    where ....
    order by A.amount asc
      

  3.   


    select amount,name,sex from (
    select rid=row_number() over (order by amount desc),* from (
    Select A.amount,B.name,C.sex
    From A,B,C
    Where ......(此处略去一串where条件)
    ) t
    ) tt
    where rid=1
      

  4.   

    Select A1.amount,B.name,C.sex
    From A a1,B,C
    Where ...... --(此处略去一串where条件)
    and not exists (
       select 1
       from a a2,B,C
       where ...... --(此处略去一串where条件)
       and a2.amount > a1.amount
       )因为不清楚略去的内容,这个语句可能效率不好
      

  5.   

    Select A.amount,B.name,C.sex
    From A,B,C
    Where ......
    and a.amount=(select max(amount) from a)
      

  6.   


    这个不对,我是要选出来的结果里的那个max(amount),不是整个A表里面最大的amount
      

  7.   


    有没有再简单一点的。因为我这个不是直接把这段语句在数据库里执行,而是要用我的那个开发工具组织成一个完整的SQL语句,太复杂可能实现不了
      

  8.   


    ORACLE里可以用TOP吗?还是用别的关键字?
      

  9.   

    除非你的3是固定的,那肯定用top
    不确定是几的话肯定要重新排序过取最大的