亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》
  • 首頁 > 
  • 教程 > 
  • 數據庫 > 
  • Oracle分頁+付上Sql Server分頁+千萬級數據分頁的存儲過程是怎樣的

Oracle分頁+付上Sql Server分頁+千萬級數據分頁的存儲過程是怎樣的

發布時間:2021-10-13 09:21:34 來源:億速云 閱讀:189 作者:柒染 欄目:數據庫

這篇文章給大家介紹Oracle分頁+付上Sql Server分頁+千萬級數據分頁的存儲過程是怎樣的,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

select * from a_matrix_navigation_map
where rowid not in(select rowid from a_matrix_navigation_map where rownum<=0) and rownum<=10

第二種:

SELECT * FROM
(
SELECT A.*, rownum r
FROM
(
SELECT *
FROM a_matrix_navigation_map

) A
WHERE rownum <= 10
) B
WHERE r > 0

第三種

SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;
第四種

可以用變通一點的辦法,我給個示例:

sql = "select a_id,a_title,a_author,aID,a_time,a_readtime,sID from article order by a_id";

int a;
while (rs.next()) {
a++;
if (a=ipage+spage)continue;
...
} 其中第二種是非常成熟的分頁 我的實例~ 即可實現 類似limit 功能$bandanspager="select * from abc t2,abc1 t1 where t1.id=t2.id group by t1.id";    $sql=" SELECT * FROM          (             SELECT A.*, rownum r             FROM             ( ".$bandanspager.") A            WHERE rownum <= 10          ) B

         WHERE r > 0

 

 

Oracle不支持類似于 MySQL 中的 limit. 但你還是可以rownum來限制返回的結果集的行數.

如果你只希望返回前十行紀錄,你可以這樣寫:

SELECT * FROM table WHERE ROWNUM<10;

但是下面的語句是不對的:

SELECT * FROM table WHERE ROWNUM>90 AND ROWNUM<100;

這是因為 Oracle 認為這個條件不成立,所以沒有返回。
你應該這樣寫:

SELECT * FROM table WHERE ROWNUM<101;
minus
SELECT * FROM table WHERE ROWNUM<91;

 

其他數據庫模擬實現mysql的limit語法

假如我有個user表,我想查詢符合某些條件的第50個用戶開始的10個用戶,且不能使用id號between and那樣查詢,應該怎么寫SQL語句?

  在mysql數據庫中有limit,offset語句可以方便的實現,那么在SQL server中呢?SQL Server是否支持limit和offset語句呢?

select top 10 * from
(select top 60 * from [user] order by userid) aa
order by userid desc

  oracle,如果想從表中取出按照某字段排序前M到N條記錄

  下面的ORACLE語句是最好的:

SQL> select ID from
     (
       select ID , rownum as con from
       (
        select ID from TestSort order by ID
       )
       where rownum <= 3   /*N值*/
     )
     where con >= 2; /*M 值*/
ID
----------
         2
         3

 


 

SqlServer分頁:

一條SQL語句搞定Sql Server 2000 分頁

Sql Server 2000 的分頁方案大多采用存儲過程來完成,存儲過程書寫比較復雜,在參考了ITPUB網站上眾多網友的意見后用一條SQL語句就可以實現分頁功能。SELECT TOP 頁大小 *FROMUsersWHERE(ID NOT IN (SELECT TOP (頁大小*(頁數-1)) ID FROM Users ORDER BY ID DESC))ORDER BYID DESC注:頁大小指的是每頁顯示的條數。黃底部分是需要用程序運算后的一個數字。

千萬級數據分頁的存儲過程:
引用自:Oracle分頁(limit方式的運用)+付上SqlServer分頁+千萬級數據分頁的存儲過程

/*
   經測試,在 14483461 條記錄中查詢第 100000 頁,每頁 10 條記錄按升序和降序第一次時間均為 0.47 秒,第二次時間均為 0.43 秒,測試語法如下:
  exec GetRecordFromPage news,newsid,10,100000
   news 為 表名, newsid 為關鍵字段, 使用時請先對 newsid 建立索引。
*/

/*
函數名稱: GetRecordFromPage
函數功能: 獲取指定頁的數據
參數說明: @tblName      包含數據的表名
           @fldName       關鍵字段名
           @PageSize     每頁記錄數
           @PageIndex    要獲取的頁碼
           @OrderType    排序類型, 0 - 升序, 1 - 降序
           @strWhere     查詢條件 (注意: 不要加 where)



*/
CREATE PROCEDURE GetRecordFromPage
    @tblName      varchar(255),       -- 表名
    @fldName     varchar(255),       -- 字段名
    @PageSize     int = 10,           -- 頁尺寸
    @PageIndex    int = 1,            -- 頁碼
    @OrderType    bit = 0,            -- 設置排序類型, 非 0 值則降序
    @strWhere     varchar(2000) = '' -- 查詢條件 (注意: 不要加 where)
AS

declare @strSQL   varchar(6000)       -- 主語句
declare @strTmp   varchar(1000)       -- 臨時變量
declare @strOrder varchar(500)        -- 排序類型

if @OrderType != 0
begin
    set @strTmp = '<(select min'
    set @strOrder = ' order by [' + @fldName + '] desc'
end
else
begin
    set @strTmp = '>(select max'
    set @strOrder = ' order by [' + @fldName +'] asc'
end

set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
    + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
    + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
     + @fldName + '] from [' + @tblName + ']' + @strOrder + ') as tblTmp)'
    + @strOrder

if @strWhere != ''
    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + '] where [' + @fldName + ']' + @strTmp + '(['
        + @fldName + ']) from (select top ' + str((@PageIndex-1)*@PageSize) + ' ['
        + @fldName + '] from [' + @tblName + '] where ' + @strWhere + ' '
        + @strOrder + ') as tblTmp) and ' + @strWhere + ' ' + @strOrder

if @PageIndex = 1
begin
    set @strTmp = ''
    if @strWhere != ''
        set @strTmp = ' where (' + @strWhere + ')'

    set @strSQL = 'select top ' + str(@PageSize) + ' * from ['
        + @tblName + ']' + @strTmp + ' ' + @strOrder
end

exec (@strSQL)

GO

關于Oracle分頁+付上Sql Server分頁+千萬級數據分頁的存儲過程是怎樣的就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

肥乡县| 即墨市| 安吉县| 潞西市| 府谷县| 佛学| 高青县| 婺源县| 体育| 从化市| 洛浦县| 奎屯市| 亳州市| 行唐县| 梁河县| 金堂县| 偏关县| 当雄县| 关岭| 霍林郭勒市| 札达县| 和田市| 阳江市| 博客| 曲靖市| 深州市| 湛江市| 宁河县| 东阳市| 沭阳县| 大同县| 连南| 三明市| 突泉县| 博乐市| 郸城县| 桦川县| 宣城市| 千阳县| 武隆县| 宣威市|