SQL查询排序后前20条语句

假如我有一个表A,里面有一个普通字段A和时间字段B,使它按时间排序后筛选出前20条记录,求解各位大侠SQL怎么写,数据库是ORACLE的。上面问题有点错,假如我有一个表A... 假如我有一个表A,里面有一个普通字段A和时间字段B,使它按时间排序后筛选出前20条记录,求解各位大侠SQL怎么写,数据库是ORACLE的。
上面问题有点错,

假如我有一个表A,里面有一个普通字段C,D和时间字段B,使它按C="xxx"筛选得出的结果按时间排序后筛选出前20条记录,

select C,D,B from A where C="XXX" and rownum <= 20 order by B;
的出的结果并不是按
select C,D,B from A where C="XXX" order by B;
语句查出来的前20条,求解啊。。
展开
 我来答
大野瘦子
高粉答主

推荐于2019-09-08 · 繁杂信息太多,你要学会辨别
知道小有建树答主
回答量:1227
采纳率:100%
帮助的人:33.2万
展开全部

SELECT C.D FROM (

SELECT C,D,ROWNUM RN FROM (

SELECT T.* FROM TABLE1 ORDER BY B DESC --降序

) T1

) WHERE RN <= 20

注:用ROWNUM的话,你要先排好序,然后再用ROWNUM生成伪列,再限制行数。

扩展资料:

关于sql语句查询排序

一、sql查询单词

order by 是用在where条件之后,用来对查询结果进行排序

order by 字段名 asc/desc  

asc 表示升序(默认为asc,可以省略)

desc表示降序

order by 无法用于子查询,否则会报错:除非另外还指定了 TOP 或 FOR XML,否则,ORDER BY 子句在视图、内联函数、派生表、子查询和公用表表达式中无效。

二、关联查询(左外查询)(jt项目菜单查询)

<select id="findObjects" resultMap="map">

select c.*,p.name parentNam

from sys_menus c left join sys_menus p

on c.parentId=p.id

三、用ORDER BY 子句

SELECT <列名列表> FROM <表名>[WHERE 条件]ORDER BY <字段名1> [ASC|DESC] [ ,字段名2 [ASC|DESC] ] [,...n]--order by <字段名1> (不写ASC|DESC, 则默认升序ASC)

babyAn涩
推荐于2017-10-05 · 知道合伙人金融证券行家
babyAn涩
知道合伙人金融证券行家
采纳数:7678 获赞数:132048
2014年于上海市商贸旅游学校毕业,专业会计。后就读于上海市同济大学网络教育学院。

向TA提问 私信TA
展开全部

直接用order by 和top结合的语句就可以实现。

创建表及插入数据:

create table test
(id int,
name varchar(20))

insert into test values (1,'百度知道团长')
insert into test values (3,'du小智')
insert into test values (4,'du小佑')
insert into test values (6,'du小短')
insert into test values (8,'du知了')
insert into test values (2,'李白')
insert into test values (5,'杜甫')
insert into test values (7,'白居易')
insert into test values (9,'孟浩然')
insert into test values (10,'王维')
insert into test values (11,'吕布')
insert into test values (13,'赵云')
insert into test values (14,'典韦')
insert into test values (16,'关羽')
insert into test values (18,'马超')
insert into test values (12,'孙悟空')
insert into test values (15,'猪八戒')
insert into test values (17,'沙和尚')
insert into test values (19,'唐僧')
insert into test values (20,'白龙马')
insert into test values (21,'宋江')
insert into test values (23,'卢俊义')
insert into test values (24,'吴用')
insert into test values (26,'公孙胜')
insert into test values (28,'关胜')

如上,插入25条数据,现在要求按ID排序,并取出ID从小到大的前20条数据,可用如下语句:

select top 20 * from test order by id;

结果截图:

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
lizhenyi305
2013-11-28 · 超过23用户采纳过TA的回答
知道答主
回答量:59
采纳率:0%
帮助的人:53.4万
展开全部
用ROWNUM的话,你要先排好序,然后再用ROWNUM生成伪列,再限制行数。
SELECT C.D FROM (
SELECT C,D,ROWNUM RN FROM (
SELECT T.* FROM TABLE1 ORDER BY B DESC --降序
) T1
) WHERE RN <= 20
追问
必须用三层么?
追答
可以这样
SELECT * FROM (SELECT * FROM TABLE1 ORDER BY B DESC ) --降序
WHERE ROWNUM <= 20
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
南潇酱d6aa2
2013-11-28 · TA获得超过343个赞
知道小有建树答主
回答量:170
采纳率:0%
帮助的人:48.7万
展开全部
SELECT A, B FROM
(SELECT A, B FROM A ORDER BY B)
WHERE ROWNUM <= 20(抽出记录数)
ORDER BY ROWNUM ASC
追问
能执行,但是结果不是SELECT A, B FROM A ORDER BY  B此条语句执行的前20条。

能帮忙再想想么?
追答
这例子都给你了  照猫画虎试两次就出来了  要怎么查询就怎么改呗
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
巨蟹星people
2013-11-28 · 超过11用户采纳过TA的回答
知道答主
回答量:116
采纳率:0%
帮助的人:37.7万
展开全部
select top 20 字段A from 表 order by 时间
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式