RowNum
为每个查询结果的每一行返回行号
例如:
select RowNum,Sysno,OrderNUm from orders;
返回结果:
图中RowNum即为行号,这个行号并不是固定的,而是根据每次查询的结果返回的。
例如:通过添加排序条件返回的结果也是从1开始
select RowNum,Sysno,OrderNum from orders where orderType = 1;
RowNum在实际的开发中可以实现取出某一行的数据,比较常用的功能是分页的功能
例如:取出第1页的数据,每页显示5条数据;
* pageSize = 5;每页的显示行数
* pageCurrent=1;当前页
SELECT * FROM (
select RowNum rn,Sysno,OrderNum from orders ord WHERE ROWNUM<=pageCurrent*pageSize ) ordTb
WHERE ordTb.rn>(pageCurrent-1)*pageSize ;
RowID
一个使用基于64为编码的18个字符来唯一标识一条记录物理位置的一个ID,如果有两条相同的数据,RowId可以区分两条相同数据记录。面试的时候,很多面试官会提出问题:删除数据表中重复的数据,这时候可以通过RowId来实现。
select RowId ri,name from person order by name,ri;
如图,虽然name中有相同的记录,但是RowId是不同的,ROWID包含了数据号、文件号、数据位号。
其中有个规律:较先生成的数据的RowID会较小,根据这个规律,我们可以删除重复的数据
DELETE FROM person
WHERE ROWID NOT IN (SELECT MIN(ROWID) FROM person GROUP BY name) ;
select * from person;
重复的数据已经删除,所以可以利用RowID去进行去重