sql server中top,oracle中rownum,mysql中limit伪列函数的使用
程序员文章站
2022-04-04 13:05:01
...
sql server中top,oracle中rownum,mysql中limit函数
Sql server————//列出前5行
select top 5 * from table
//查询第11行到第20行记录
select top 10 * from [表名] where [主键] not in (select top 10 [主键] from [表名] order by
[排序字段及排序方法]) order by [排序字段及排序方法]
Oracle————//前5行
select * from table where rownum <= 5;
//第5到10行
select * from table where rownum<10
minus
select * from table where rownum<4;
类似可以实现分页功能
———以前经常用这种方法:
select * from (select rownum rn,title,id from CMS_ARTICLE where DISPLAY_PLACE in(0,2) and STATE=1 and CATEGORY_ID = 169) t
where t.rn>16 and t.rn<20
MySQL————
实现Top N及M至N段的记录查询
我们可以利用MySQL中Select支持的一个子句——LIMIT——来完成这项功能。
limit可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:
select * from MYTABLE
order by AFIELD
LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例:
select * from mytable
order by afield
limit 2, 5
即表示从第3条记录开始的5条记录。
_____________________________________________________________________________
sqlserver:
select top 10 * from table where [column id] not in ( select top 10 [column id] from table )
以下选择87~96行的10行数据:
select top 10 id from (select top 96 id from aa order by id asc)as kk order by id desc
这些语句可以用于不同数据库的分页
随机10行:
select top 10 * from aa order by newid()
oracle:
SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;
mysql:
select * from table limit 5,5
第一个5是开始的行号,第二个5是选择纪录的数量
Sql server————//列出前5行
select top 5 * from table
//查询第11行到第20行记录
select top 10 * from [表名] where [主键] not in (select top 10 [主键] from [表名] order by
[排序字段及排序方法]) order by [排序字段及排序方法]
Oracle————//前5行
select * from table where rownum <= 5;
//第5到10行
select * from table where rownum<10
minus
select * from table where rownum<4;
类似可以实现分页功能
———以前经常用这种方法:
select * from (select rownum rn,title,id from CMS_ARTICLE where DISPLAY_PLACE in(0,2) and STATE=1 and CATEGORY_ID = 169) t
where t.rn>16 and t.rn<20
MySQL————
实现Top N及M至N段的记录查询
我们可以利用MySQL中Select支持的一个子句——LIMIT——来完成这项功能。
limit可以实现top N查询,也可以实现M至N(某一段)的记录查询,具体语法如下:
select * from MYTABLE
order by AFIELD
LIMIT offset, recnum
其中offset为从第几条(M+1)记录开始,recnum为返回的记录条数。例:
select * from mytable
order by afield
limit 2, 5
即表示从第3条记录开始的5条记录。
_____________________________________________________________________________
sqlserver:
select top 10 * from table where [column id] not in ( select top 10 [column id] from table )
以下选择87~96行的10行数据:
select top 10 id from (select top 96 id from aa order by id asc)as kk order by id desc
这些语句可以用于不同数据库的分页
随机10行:
select top 10 * from aa order by newid()
oracle:
SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;
mysql:
select * from table limit 5,5
第一个5是开始的行号,第二个5是选择纪录的数量