谢谢你!! ,但是还有一个问题是,如果我选择全部来排序就可以,比如 select * from tss_goods order by googs_id desc 它会把商品记录从最新的排下去 如:goods_id goods_name 22 图书1 21 图书2 18 图书3 …… … 但是我只想选择前两个就写:select * from tss_goods where rownum<=2 order by go_id desc 找到的却不是前两个,怎么办? 请高手指教,谢谢!
select * from (select * from tss_goods order by googs_id desc) A where rownum<=2
select A.* from (select t.*,rownum as rnum from tss_goods t order by googs_id desc) A where A.rnum<=10
Select * From table_name Where Rownum<=10如果是排序后的前十条的话 select * from (select * from tablename order by field) where rownum<=10 或者 Select * From ( Select a.* , row_number() over(Order By field) rk From tablename a )Where rk<=10
最好还是用分析函数: 如获取每个部门薪水前三名的员工或每个班成绩前三名的学生。 Select * from (select depno,ename,sal,row_number() over (partition by depno order by sal desc) rn from emp) where rn<=3
,但是还有一个问题是,如果我选择全部来排序就可以,比如
select * from tss_goods order by googs_id desc
它会把商品记录从最新的排下去
如:goods_id goods_name
22 图书1
21 图书2
18 图书3
…… …
但是我只想选择前两个就写:select * from tss_goods where rownum<=2 order by go_id desc
找到的却不是前两个,怎么办?
请高手指教,谢谢!
where rownum<=2
where A.rnum<=10
select * from (select * from tablename order by field) where rownum<=10
或者
Select * From (
Select a.* , row_number() over(Order By field) rk From tablename a
)Where rk<=10
如获取每个部门薪水前三名的员工或每个班成绩前三名的学生。
Select * from
(select depno,ename,sal,row_number() over (partition by depno
order by sal desc) rn
from emp)
where rn<=3