查询数据库中第n行数据

一般情况下分页的时候是需要的关键字。MySQL中是limit关键字,MSSQL中是top关键字,Oracle中则是rownum。

伪列是指那些可以像表中的列一样用在SELECT中但不作为用户数据在表中存储的特殊标识, 它们可以被选择(使用SELECT),但不能被删除(DELETE)和更新(UPDATE)。
ROWNUM的本质是一个伪列,它的作用是对结果集加的一个伪列(即先查到结果集之后再加上去的一个列)简单的说rownum是对符合条件结果集添加的序列号。
它总是从1开始排起的,所以选出的结果中不可能没有1,而有其他大于1的值。
任何时候想把 rownum = 1 这条记录抛弃是不对的,它在结果集中是不可或缺的,少了rownum=1 就像空中楼阁一般不能存在,所以你的 rownum 条件要包含到 1。
那么,如果想要用 rownum > 5 这种条件的话就要用子查询,把rownum先生成,然后再对生成结果进行查询。
示例:
SELECT * FROM (
SELECT e.*, rownum r FROM employee WHERE rownum <= 10
) t WHERE t.r > 5;
查第n条数据,如:(1)select * from (SELECT ROWNUM rn,A.* FROM TABLE A )b where b.rn=n;
(2)select top 1 * from TABLE A where id not in(select top n-1 id from TABLE A );

使用 ROWNUM 实现分页显示 SELECT * FROM (SELECT ROWNUM AS ROW_NUM, A.* FROM (SELECT * FROM tab3 T ORDER BY a DESC) A ) B WHERE B.ROW_NUM BETWEEN 1 AND 3;

原文地址:https://www.cnblogs.com/fzdsy/p/10384485.html

时间: 2024-11-11 14:57:34

查询数据库中第n行数据的相关文章

mysqli:查询数据库中,是否存在数据的三种校验方法

在我们编辑用户登录功能的时候,常常需要对用户输入的信息进行校验,校验的方法就是通过SQL语句进行一个比对,那么我们就需要用到以下三种中的一种进行校验啦 1.使用mysqli_num_rows()校验 例子: 成功情况: 失败情况: 2.使用mysqli_fetch_array()校验 例子: 成功情况: 失败情况: 3.使用mysqli_fetch_all()校验 例子: 成功情况: 失败情况: 以上 END 原文地址:https://www.cnblogs.com/finalanddistan

计算数据库中各个表的数据量和每行记录所占用空间--添加架构信息-读后感及知识整理

参考文章: SQL Server 游标运用:查看一个数据库所有表大小信息(Sizes of All Tables in a Database) 分享一个SQLSERVER脚本(计算数据库中各个表的数据量和每行记录所占用空间) 监控SQLServer 数据库表每天的空间变化情况 仔细拜读上面三位的文章,不会的知识点又参考了MSDN,巩固了知识点如下: 知识点: 1.表的架构信息,涉及的系统对象 sys.schemas 和 INFORMATION_SCHEMA.TABLES,但后者不是官方推荐方式,

随机获取oracle数据库中的任意一行数据(rownum)

最近看oracle资料的时候,了解rownum的概念,以前只知道对数据库表进行简单的增删改查: 看到了rownum的概念后,突然想到了好多业务场景应该都可以适用的,比如在进行随机发奖的时候, 我们就可以从先查一下奖品表中可以发的总奖品数,然后通过java的Random类在总奖品数内生成一个随机整数X,然后调用 select * from (select rownum no,id from Table where rownum<=X ) where no >=X 获取出该条奖品,这样获取出来的值

转:SQL SERVER数据库中实现快速的数据提取和数据分页

探讨如何在有着1000万条数据的MS SQL SERVER数据库中实现快速的数据提取和数据分页.以下代码说明了我们实例中数据库的“红头文件”一表的部分数据结构: CREATE TABLE [dbo].[TGongwen] (    --TGongwen是红头文件表名 [Gid] [int] IDENTITY (1, 1) NOT NULL , --本表的id号,也是主键 [title] [varchar] (80) COLLATE Chinese_PRC_CI_AS NULL ,  --红头文件

SQL中将某个表中的多行数据在一个字段显示

项目需求:将某个表中的多行数据在一个字段显示,如下: 比如表A中有字段 ID,NAME, 表B中有字段ID,PID,DES, 表A,表B中的数据分别如下: ID NAME1 张三2 李四 ID PID DES1 1 语文2 1 数学3 1 外语4 2 历史5 2 地理 最终我想显示的效果为: ID NAME KC1 张三 语文,数学,外语2 李四 历史,地理 方法:使用sql中的STUFF函数与for xml path 1.for xml path是将将查询结果集以XML形式展现 比如对于表B,

hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决

hibernate 4.3 在使用获取数据获取不到数据库中最新变更的数据问题解决,应该是因为缓存问题 问题过程和现象: 查询一个数据列表=>数据库中手动update了数据=>刷新页面,数据显示还是update之前的旧数据 网上找到解决办法: 1.使用session.clear();在查询之前先清空缓存----经测试,此方法在4.3版本无效,其它版本没测试: 参考连接:https://www.linuxidc.com/Linux/2014-09/106458.htm 2.不使用hibernate

关于数据库中varchar/nvarchar类型数据的获取注意事项

当在页面后台获取数据库表中某字段的数据时,需注意该数据的类型.防止因实际数据的字符长度因达不到指定数据类型规定的字符长度而导致空格的占位符. 比如: MSSQL中某一表的结构如下:   表中的数据: 当从表中获取某一个用户名(userName)或密码(userPwd)时,如果取出的数据作为条件进行判断是,需注意获取处的数据最好进行Trim()处理,去除数据两边的空格占位符 比如: 没有对数据进行Trim()处理前,从数据库中获取的数据因为原本的数据长度不够而导致空格占位符 对数据进行Trim()

linux查询文件中某几行

查询文件中某几行: sudo cat /etc/tinyproxy.conf | head -n 32 | tail -n +29 [一]从第3000行开始,显示1000行.即显示3000~3999行 cat filename | tail -n +3000 | head -n 1000 [二]显示1000行到3000行 cat filename| head -n 3000 | tail -n +1000 *注意两种方法的顺序 分解: tail -n 1000:显示最后1000行 tail -n

使用JDBC向数据库中插入一条数据

原谅我是初学者,这个方法写的很烂,以后不会改进,谢谢 /** * 通过JDBC向数据库中插入一条数据 1.Statement 用于执行SQL语句的对象 1.1 通过Connection 的 * createStatement() 方法来获取 1.2 通过executeUpdate(sql) 的方法来执行SQL 1.3 * 传入的SQL可以是INSERT/UPDATE/DELETE,但不能是SELECT * * 2.Connection和Statement使用后一定要记得关闭 需要在finally