最近2018中文字幕在日韩欧美国产成人片_国产日韩精品一区二区在线_在线观看成年美女黄网色视频_国产精品一区三区五区_国产精彩刺激乱对白_看黄色黄大色黄片免费_人人超碰自拍cao_国产高清av在线_亚洲精品电影av_日韩美女尤物视频网站

RELATEED CONSULTING
相關(guān)咨詢(xún)
選擇下列產(chǎn)品馬上在線(xiàn)溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷(xiāo)解決方案
包含postgresql偽列的詞條

gp里用什么代替oracle里rownum,用什么代替rowid???

無(wú)法代替,也是數(shù)據(jù)庫(kù)本身的限制。

成都創(chuàng)新互聯(lián)-專(zhuān)業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性?xún)r(jià)比南樂(lè)網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式南樂(lè)網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋南樂(lè)地區(qū)。費(fèi)用合理售后完善,十載實(shí)體公司更值得信賴(lài)。

1,oracle的rowid在普通表中是能唯一標(biāo)記一行記錄,可以快速定位。

2,在Postgresql中有一個(gè)與rowid差不多的就是oid,但這個(gè)默認(rèn)沒(méi)有的 ,要在建表的時(shí)候指定with oids才有。這個(gè)也可以唯一標(biāo)記并快速定位行記錄。

3,在GREENPLUM中,一個(gè)OID確實(shí)是可以找到多行,這是因?yàn)镚REENPLUM是由多個(gè)INSTANCE組成的。

mysql 類(lèi)似oracle parallel的多線(xiàn)程查詢(xún)

1)查詢(xún)表中的前8條記錄

select * from area where rownum = 8

查詢(xún)結(jié)果如下:

2)查詢(xún)第2到第8條記錄

對(duì)于這種形式的查詢(xún),oracle不像mysql那么方便,它必須使用子查詢(xún)或者是集合操作來(lái)實(shí)現(xiàn)。我們可以使用以下3種方式可以實(shí)現(xiàn):

A: select id,province,city,district from (select id,province,city,district,rownum as num from area) where num between 2 and 8;

首先根據(jù)select id,province,city,district,rownum as num from area得到一個(gè)臨時(shí)表,這個(gè)臨時(shí)表中有一個(gè)rownum列(一個(gè)偽列,類(lèi)似與rowid,但又不同于rowid,因?yàn)閞owid是物理存在的一個(gè)列,也就是說(shuō)Oracle數(shù)據(jù)庫(kù)中任何一個(gè)表都有一個(gè)rowid列,而rownum不是物理存在的),然后在臨時(shí)表中來(lái)查詢(xún)。

B: select * from area where rownum = 8 minus select * from area where rownum 2;

使用集合減運(yùn)算符minus,該操作返回在第一個(gè)select中出現(xiàn)而不在第二個(gè)select中出現(xiàn)的記錄。

C: select id,province,city,district from (select id,province,city,district,rownum as num from area) where num =2

intersect

select * from area where rownum = 8;

使用集合交運(yùn)算符intersect,這里繞了一個(gè)彎(不過(guò)這個(gè)彎實(shí)現(xiàn)了rownum大于某個(gè)數(shù)的查詢(xún)),它是首先利用A的方式查詢(xún)得到所有rownum大于2的記錄,然后再與rownum小于等于8的記錄集合做交運(yùn)算。三種操作得到的結(jié)果一樣,如下圖所示:

3)rownum需要注意的問(wèn)題

[1] rownum不支持以下方式的查詢(xún)

a: select * from area where rownum 2;

b: select * from area where rownum = n; –where n is a integer number lager than 1

注:rownum只支持select * from area where rownum =1的查詢(xún)。Oracle的官方文檔說(shuō)明如下:

Conditions testing for ROWNUM values greater than a positive integer are always false.

For example, this query returns no rows:

SELECT * FROM employees

WHERE ROWNUM 1;

The first row fetched is assigned a ROWNUM of 1 and makes the condition false. The

second row to be fetched is now the first row and is also assigned a ROWNUM of 1 and

makes the condition false. All rows subsequently fail to satisfy the condition, so no

rows are returned.

因?yàn)閞ownum是根據(jù)查詢(xún)的結(jié)果集來(lái)對(duì)記錄進(jìn)行編號(hào),所以當(dāng)你查詢(xún)r(jià)ownum大于2的記錄時(shí)會(huì)得到一個(gè)空的結(jié)果集。因?yàn)楫?dāng)oracle查詢(xún)得到第1條記錄時(shí),發(fā)現(xiàn)rownum為1不滿(mǎn)足條件,然后就繼續(xù)查詢(xún)第2條記錄,但此時(shí)第2條記錄又被編號(hào)為1(也即rownum變?yōu)?),所以查詢(xún)得到的始終是rownum=1,因此無(wú)法滿(mǎn)足約束,最終查詢(xún)的結(jié)果集為空。

[2] rownum的排序查詢(xún)問(wèn)題

Rownum的排序查詢(xún)是根據(jù)表中數(shù)據(jù)的初始順序來(lái)進(jìn)行的。Oracle官方文檔中說(shuō)明如下:

If an ORDER BY clause follows ROWNUM in the same query, then the rows will be

reordered by the ORDER BY clause. The results can vary depending on the way the

rows are accessed. For example, if the ORDER BY clause causes Oracle to use an index

to access the data, then Oracle may retrieve the rows in a different order than without

the index.

例如:select * from area where rownum = 8 order by district;

其結(jié)果如下圖所示:

發(fā)現(xiàn)沒(méi)有,它只對(duì)area表中的前8條記錄進(jìn)行排序。那么,如果我要取表中的前8條記錄并且要求是全表有序,那怎么辦呢?還是老辦法,使用子查詢(xún)。我們可以使用以下語(yǔ)句得到:

select * from (select * from area order by district)

where rownum = 8;

查詢(xún)的結(jié)果如下圖所示:

結(jié)束語(yǔ):

Oracle中的rownum與mysql的limit實(shí)現(xiàn)的功能相同,但沒(méi)有mysql來(lái)的容易,它一般通過(guò)一個(gè)子查詢(xún)來(lái)實(shí)現(xiàn)。mysql的易用性也是它能夠縱橫開(kāi)源數(shù)據(jù)庫(kù)的原因,它不像postgresql那樣的學(xué)院派,它的那種簡(jiǎn)單易用性或許在大型軟件項(xiàng)目的開(kāi)發(fā)中值得借鑒。最近聽(tīng)說(shuō)sql server 2008也實(shí)現(xiàn)了limit的查詢(xún),不過(guò)還沒(méi)去試過(guò),Oracle在這方面也要加油啊,用戶(hù)容易使用才是王道


分享名稱(chēng):包含postgresql偽列的詞條
文章地址:http://fisionsoft.com.cn/article/dscscdc.html