久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

oracle中rownum和rowid的區(qū)別

 好閨女瑤瑤 2016-01-07
rownum和rowid都是偽列,,但是兩者的根本是不同的,rownum是根據(jù)sql查詢出的結(jié)果給每行分配一個(gè)邏輯編號,,所以你的sql不同也就會(huì)導(dǎo)致最終rownum不同,,但是rowid是物理結(jié)構(gòu)上的,在每條記錄insert到數(shù)據(jù)庫中時(shí),,都會(huì)有一個(gè)唯一的物理記錄 ,,
例如  AAAMgzAAEAAAAAgAAB 7499 ALLEN SALESMAN 7698 1981/2/20 1600.00 300.00 30
這里的AAAMgzAAEAAAAAgAAB物理位置對應(yīng)了這條記錄,這個(gè)記錄是不會(huì)隨著sql的改變而改變,。
因此,,這就導(dǎo)致了他們的使用場景不同了,通常在sql分頁時(shí)或是查找某一范圍內(nèi)的記錄時(shí),,我們會(huì)使用rownum,。
1、rownum
例如:
查找2到10范圍內(nèi)的記錄(這里包括2和10的記錄)
select *
  from (select rownum rn, a.* from emp a) t
where t.rn between 2 and 10;

查找前三名的記錄
select * from emp a where rownum < 3,;這里我們要注意,,直接用rownum查找的范圍必須要包含1;因?yàn)閞ownum是從1開始記錄的,,當(dāng)然你可以把rownum查出來后放在一個(gè)虛表中作為這個(gè)虛表的字段再根據(jù)條件查詢,。
例如:
select *
  from (select rownum rn, a.* from emp a) t
where t.rn > 2;這就可以了

2、rowid
我們在處理一張表中重復(fù)記錄時(shí)經(jīng)常用到他,,當(dāng)然你也可以用一個(gè)很原始的方法,,就是將有重復(fù)記錄的表中的數(shù)據(jù)導(dǎo)到另外一張表中,最后再倒回去,。
SQL>create table stu_tmp as select distinct* from stu;
SQL>truncate table sut;        //清空表記錄
SQL>insert into stu select * from stu_tmp;    //將臨時(shí)表中的數(shù)據(jù)添加回原表但是要是stu的表數(shù)據(jù)是百萬級或是更大的千萬級的,,那這樣的方法顯然是不明智的,因此我們可以根據(jù)rowid來處理,,rowid具有唯一性,,查詢時(shí)效率是很高的,
例如,,學(xué)生表中的姓名會(huì)有重復(fù)的情況,,但是學(xué)生的學(xué)號是不會(huì)重復(fù)的,如果我們要?jiǎng)h除學(xué)生表中姓名重復(fù)只留學(xué)號最大的學(xué)生的記錄,,怎么辦呢,?
delete from stu a
    where rowid not  in (select max(rowid)
                          from stu b
                         where a.name = b.name
                           and a.stno < b.stno);
這樣就可以了。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多