sql如何查询表中数据一共有多少条每条数据分别在第几行 如 20170301 name1 2

sql如何查询表中数据一共有多少条每条数据分别在第几行 如 20170301 name1 2,第1张

查询表一共有多少记录可以使用count函数获得,例如

select count() as 记录行数 from 表名;

至于每条记录在哪一行就比较麻烦了,因为数据库是不关心记录的存储位置的,它不像电子表格拥有固定的记录行号

这种问题通常应该交给应用程序端来解决。数据库端解决的话,如果支持开窗函数ROW_NUMBER()的,可以利用该函数获取记录的行号,不支持的话那就要用存储过程或游标来解决,是很麻烦或低效率的。

PLSQL中查询语句的行号可以用ROWNUM(伪列)标识,

如SELECT ROWNUM,VT FROM V$TABLESPACE VT;

但PLSQL很少用行号查询数据库, 除非为了控制数据量

如SQLSERVER的SELECT TOP

或PLSQL的SELECT FROM <TABLE> WHERE ROWNUM =1, 或ROWNUM<10

进一步进行测试:

SQL1) SELECT ROWNUM,VT FROM V$TABLESPACE VT;

SQL2) SELECT ROWNUM,VT FROM V$TABLESPACE VT ORDER BY VTNAME;

分析:对比1和2, 同一级的查询, ORDER BY排序不会影响ROWNUM编号(先产生ROWNUM后排序)

SQL3) SELECT ROWNUM,VT2 FROM (SELECT VT FROM V$TABLESPACE VT ORDER BY VTNAME) VT2;

分析:如希望用排序后的结果编号,则需将排序放在子查询中,再取ROWNUM

SQL4) SELECT FROM (SELECT ROWNUM ,VT FROM V$TABLESPACE VT WHERE ROWNUM <10 ORDER BY VTNAME) WHERE ROWNUM = 3;

无数据,分析:ROWNUM为全局伪列, 在解析时优先级高于子查询中的ROWNUM列

SQL5) SELECT FROM (SELECT ROWNUM RN,VT FROM V$TABLESPACE VT WHERE ROWNUM <10 ORDER BY VTNAME) A WHERE ARN = 3;

得到指定行的数据分析:

子查询中ROWNUM编号需定义别名(本例中为"RN")后方可在条件中使用!

以上就是关于sql如何查询表中数据一共有多少条每条数据分别在第几行 如 20170301 name1 2全部的内容,包括:sql如何查询表中数据一共有多少条每条数据分别在第几行 如 20170301 name1 2、plsql获取例外时,怎样得知错误的行号、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9771440.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-01
下一篇 2023-05-01

发表评论

登录后才能评论

评论列表(0条)

保存