查询表一共有多少记录可以使用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获取例外时,怎样得知错误的行号、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)