top
100
*
from
table//
返回前100行数据
mysql支持limit,一个参数:select
*
from
table
limit
100
//返回前100行记录
Oracle需要使用rownum。select
*
from
table
where
rownum<=100
//返回前100条数据
TOP
TOP
子句用于规定要返回的记录的数目。
对于拥有数千条记录的大型表来说,TOP
子句是非常有用。
SQL
Server
的语法:
SELECT
TOP
number|percent
column_name(s)
FROM
table_name
limit子句用于强制select语句返回置顶的记录数,参数必须是整数常量。一个参数是返回前几条记录;两个参数时,第一个参数指定第一个返回记录行的偏移量(初始记录行的偏移量是0),第二个参数指定返回记录的最大数目。
rownum是oracle系统顺序分配为从查询返回的行的编号,返回的第一行分配的是1,第二行是2,依此类推,这个伪字段可以用于限制查询返回的总行数,且rownum不能以任何表的名称作为前缀
拓展资料:
SQL即结构化查询语言(Structured
Query
Language),是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。SQL语句无论是种类还是数量都是繁多的,很多语句也是经常要用到的,SQL查询语句就是一个典型的例子,无论是高级查询还是低级查询,SQL查询语句的需求是最频繁的。
可用row_number来解决。
如student表:
姓名 年龄
张三 20
李四 15
王五 22
赵六 21
孙七 18
杨八 19
刘九 24
现在要按年龄从大到小取出前5条数据的话,可用如下语句:
select 姓名,年龄from
(select 姓名,年龄,row_number() over (order by 年龄 desc) as rn from student) t
where rn<=5
得到的结果是:
姓名 年龄
刘九 24
王五 22
赵六 21
张三 20
杨八 19
参考首先,该问题对应的SQL如下
select 采购类别,客户,订货总额
from (select 采购类别,客户,订货总额,
row_number() over(partition by 采购类别 order by 订货总额 desc) rn
from table_name) a
where rn<=2
其次,常用数据库比如Oracle和Sqlserver都有特定函数完成分组排序的功能,如果需要显示并列的情况可以用下面另外的2个.
分别有3个类似函数:
row_number() over
这个函数不需要考虑是否并列,哪怕根据条件查询出来的数值相同也会进行连续排名。也是最常用的函数,排序结果类似于1,2,3,4,5
rank() over
查出指定条件后进行一个排名,但是有一个特点。假如是对学生排名,那么实用这个函数,成绩相同的两名是并列。排序结果类似于1,2,2,4,5
dense_rank() over
比较特殊,排序结果类似于1,2,2,3,4
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)