我现在有这么个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查询语句呢?
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查询语句呢?
Select top 3 A.amount,B.name,C.sex
From A,B,C
Where ......
order by A.AMOUNT desc
From A,B,C
where ....
order by A.amount asc
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
From A a1,B,C
Where ...... --(此处略去一串where条件)
and not exists (
select 1
from a a2,B,C
where ...... --(此处略去一串where条件)
and a2.amount > a1.amount
)因为不清楚略去的内容,这个语句可能效率不好
From A,B,C
Where ......
and a.amount=(select max(amount) from a)
这个不对,我是要选出来的结果里的那个max(amount),不是整个A表里面最大的amount
有没有再简单一点的。因为我这个不是直接把这段语句在数据库里执行,而是要用我的那个开发工具组织成一个完整的SQL语句,太复杂可能实现不了
ORACLE里可以用TOP吗?还是用别的关键字?
不确定是几的话肯定要重新排序过取最大的