SQL中显示查询结果的前几条记录

在使用数据库查询语句的过程中,我们经常需要返回查询结果的前几条或者中间几条数据,下面是我总结的几种数据库常用的方法:(table是数据库表名,table2是table表的别名)

1、SQLServer

sqlserver支持top关键字,返回前若干条数据。select top 5 * from table;// 返回前5行数据

2、MySQL

mysql支持limit,只能适用于mysql。limit子句用于强制select语句返回置顶的记录数,接受一个或两个数字参数,必须是整数常量。一个参数是返回前几条记录;两个参数时,第一个参数指定第一个返回记录行的偏移量(初始记录行的偏移量是0),第二个参数指定返回记录的最大数目。

一个参数:select * from table limit 10; //返回前10行记录

两个参数:select * from table limit 5,10; //返回第6-15行的记录

select * from table limit 5,-1; //返回第6行到最后一行的记录   (从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1)

select * from table limit 0,10 //返回前10行记录,和limit10的结果一样,即limit0,n=limit n

3、Oracle

Oracle需要使用rownum。select * from table where rownum<=5; //返回前5条数据

4、DB2

select * from table fetch first 5 rows only; //返回前5条数据

select * from (select 列名1,列名2,row_number() over() as a from table) as table2  where a>=5 and a<=10;//返回第5行到第10行的数据
---------------------
作者:shanshan1yi
来源:CSDN
原文:https://blog.csdn.net/shanshan1yi/article/details/61916271
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/wang992997290/p/10493810.html

时间: 2024-11-16 19:53:13

SQL中显示查询结果的前几条记录的相关文章

mysql使用GROUP BY分组实现取前N条记录的方法

MySQL中GROUP BY分组取前N条记录实现 mysql分组,取记录 GROUP BY之后如何取每组的前两位下面我来讲述mysql中GROUP BY分组取前N条记录实现方法. 这是测试表(也不知道怎么想的,当时表名直接敲了个aa,汗~~~~): 结果: 方法一: SELECT a.id,a.SName,a.ClsNo,a.Score FROM aa a LEFT JOIN aa b ON a.ClsNo=b.ClsNo AND a.Score<b.Score group by a.id,a.

SQL实现分组查询取前几条记录

我要实现的功能是统计订单日志表中每一个订单的前三条日志记录,表结构如下: 一个订单在定点杆日志表中有多条记录,要根据时间查询出每一个订单的前三条日志记录,sql如下: select b.OrderNumber,b.creationtime,b.remark FROM ( SELECT a.OrderNumber,a.CreationTime,a.Remark FROM [FortuneLabFord].[dbo].[SO_Log] a where a.SysId IN ( select TOP

SQL中=null查询不出结果而is null可以查询结果说明

我们在sql中要查询某列值为null的所有结果集时,查询条件应该这样写select * from 表 where 字段 is null而使用select * from 表 where 字段 = null是查不到正确的结果的.那这是为什么呢?要清楚为什么,就需要了解sql中的三值逻辑了.在SQL中逻辑表达式的可能值包括TRUE.FALSE和UNKNOWN,它们被称之为三值逻辑. 我们知道,在其它的语言中,逻辑表达式只有两种,要么是true,要么就是false.而sql中却存在第三个逻辑表达式UnK

SQL 中怎么查询数据库中具有的表、存储过程、试图数目、总触发器数、作业数

用户表:select count(*) 总表数 from sysobjects where xtype='u' 刚才那个是用户表,下面这个是系统表加用户表: select count(*) 总表数 from sysobject s where xtype in('u','s') 总视图数:select count(*) 总视图数 from sysobjects where xtype='v' 总存储过程数:select count(*) 总存储过程数 from sysobjects where

[mysql] 查询前几条记录

From: http://www.cnblogs.com/xuxm2007/archive/2010/11/16/1878211.html SELECT   *   FROM   table   LIMIT   5;           select     *     from     issu_info     limit     0,6             Limit     0,6       这里是对的,显示前6条                   select     *   

rownum查询前N条记录

在Oracle中,要按特定条件查询前N条记录,用个rownum就搞定了.——select * from emp where rownum <= 5 而且书上也告诫,不能对rownum用">",这也就意味着,如果你想用——select * from emp where rownum > 5——则是失败的.(因为rownum的值一定是从1开始的) 同样道理,rownum如果单独用 = 也只有在rownum=1时才有用. rownum 对于等于某值的查询条件   如果希望找

Oracle查询前10条记录及分页查询(第5条到第10记录)

如果你想了解Oracle查询前10条记录的相关实际应用方案的话,你就可以点击以下的文章对其在实际相关操作中的正确用法,有一个更加完善的认识,希望你在浏览完以下的文章会以下就是正文的详细内容的介绍. 在Oracle怎样查询表中的top10条记录呢? select *   from test   where rownum <=10   下面是关于rownum的介绍 Rownum和row_number() over()的使用 ROWNUM是Oracle从8开始提供的一个伪列,是把SQL出来的结果进行编

查询各科成绩前三名的记录

查询各科成绩前三名的记录:(不考虑成绩并列情况),显示(学号.课程号.分数) SELECT * FROM ( SELECT SC.STUDENT_NO SNO, SC.COURSE_NO CNO, SC.CORE SCORE, ROW_NUMBER() OVER(PARTITION BY SC.COURSE_NO ORDER BY SC.CORE DESC) RN FROM HAND_STUDENT_CORE SC) A WHERE A.RN <= 3 row_number() OVER (PA

Oracle取查询结果数据的第一条记录SQL

Oracle取查询结果数据的第一条记录SQL: select * from (select * from <table> order by <key>) where rownum=1; select * from (select * from <table> order by <key> desc) where rownum=1;