原創(chuàng)|行業(yè)資訊|編輯:莫成敏|2019-08-20 13:49:47.007|閱讀 1069 次
概述:SQL LIMIT子句限制SELECT語(yǔ)句返回的行數(shù)。對(duì)于SQL Server或MSAccess等Microsoft數(shù)據(jù)庫(kù),可以使用SELECT TOP語(yǔ)句來(lái)限制結(jié)果,這是Microsoft專(zhuān)有的SELECT LIMIT語(yǔ)句。但是,對(duì)于大多數(shù)關(guān)系數(shù)據(jù)庫(kù)(DBMS),包括MySQL / MariaDB、PostgreSQL和Oracle,SQL LIMIT子句可以解決幾個(gè)問(wèn)題。在這篇文章中,我們將使用Navicat for PostgreSQL來(lái)探索其中的一些問(wèn)題。
# 界面/圖表報(bào)表/文檔/IDE等千款熱門(mén)軟控件火熱銷(xiāo)售中 >>
相關(guān)鏈接:
Navicat for PostgreSQL是一套專(zhuān)為PostgreSQL設(shè)計(jì)的強(qiáng)大數(shù)據(jù)庫(kù)管理及開(kāi)發(fā)工具。它可以在PostgreSQL數(shù)據(jù)庫(kù)7.5以上的版本中運(yùn)行,并且支持大部份最新的PostgreSQL功能,包括觸發(fā)器、函數(shù)檢索及權(quán)限管理等。Navicat的的功能不僅可以滿(mǎn)足專(zhuān)業(yè)開(kāi)發(fā)人員的所有需求,而且對(duì)PostgreSQL的新手來(lái)說(shuō)也相當(dāng)容易學(xué)習(xí)。
點(diǎn)擊下載Navicat for PostgreSQL免費(fèi)版
SQL LIMIT子句限制SELECT語(yǔ)句返回的行數(shù)。對(duì)于SQL Server或MSAccess等Microsoft數(shù)據(jù)庫(kù),可以使用SELECT TOP語(yǔ)句來(lái)限制結(jié)果,這是Microsoft專(zhuān)有的SELECT LIMIT語(yǔ)句。但是,對(duì)于大多數(shù)關(guān)系數(shù)據(jù)庫(kù)(DBMS),包括MySQL / MariaDB、PostgreSQL和Oracle,SQL LIMIT子句可以解決幾個(gè)問(wèn)題。在這篇文章中,我們將使用Navicat for PostgreSQL來(lái)探索其中的一些問(wèn)題。
保持結(jié)果集可管理
在許多生產(chǎn)和測(cè)試數(shù)據(jù)庫(kù)中,表的大小通常達(dá)到數(shù)百萬(wàn)行并且具有數(shù)十列。因此,對(duì)數(shù)據(jù)庫(kù)運(yùn)行SELECT *查詢(xún)絕不是一個(gè)好主意。將結(jié)果保持在100或1000有助于將結(jié)果集保持在更容易消化的大小。
Navicat開(kāi)發(fā)和管理工具默認(rèn)情況下自動(dòng)限制結(jié)果集,以防止數(shù)據(jù)庫(kù)服務(wù)器過(guò)度緊張。打開(kāi)表格時(shí),您可以看到它的運(yùn)行情況。在應(yīng)用程序窗口的底部,顯示Navicat執(zhí)行以獲取表行的SQL。它以“LIMIT 1000 OFFSET 0”結(jié)束,這意味著只顯示前1000條記錄。
您可以在RECORDS選項(xiàng)屏幕上更改要顯示或關(guān)閉限制的默認(rèn)記錄數(shù):
前N個(gè)查詢(xún)
顧名思義,前N個(gè)查詢(xún)是那些試圖從結(jié)果集中查找最大記錄數(shù)的查詢(xún)。這些查詢(xún)可以是top 1,top 3,top 5,top 10或top [任意]數(shù)字。一些常見(jiàn)的例子是:
找到薪酬最高的10名員工
找到前20名最賺錢(qián)的客戶(hù)
找到系統(tǒng)上的前3個(gè)用戶(hù)
僅使用ORDER BY和WHERE子句很難處理這些查詢(xún),但不使用LIMIT子句。這是一個(gè)例子:
前5個(gè)唯一作業(yè)ID
假設(shè)我們想在表中找到最頂層的唯一作業(yè)ID。這是一個(gè)執(zhí)行此操作的查詢(xún):
DISTINCT關(guān)鍵字確保從結(jié)果中刪除重復(fù)的ID。
最接近給定日期的行
可以使用LIMIT定位最接近給定日期的行。您只需將行日期與給定日期進(jìn)行比較,對(duì)結(jié)果進(jìn)行排序,并將結(jié)果限制為您希望查看的行數(shù)。這是一個(gè)返回其creation_date大于'2018-01-01'的行的查詢(xún):
在這種情況下,2018-01-02是最接近的日期。
底部N個(gè)查詢(xún)
前N個(gè)查詢(xún)的推論是底部N個(gè)查詢(xún)。這些是嘗試從結(jié)果集中查找底部記錄數(shù)的查詢(xún)。我們可以很容易地將我們的Top查詢(xún)轉(zhuǎn)換為它們的Bottom等價(jià)物!
底部5個(gè)唯一作業(yè)ID
要返回底部5個(gè)唯一作業(yè)ID,您需要做的就是刪除ORDER BY子句中的DESC修飾符。這將按升序(ASC)順序排序記錄,默認(rèn)情況下:
在給定日期之下的最近行
在給定日期之前找到最近的行同樣相當(dāng)容易。我們只需要將大于“>”的運(yùn)算符更改為小于“<”,并按降序(DESC)順序重新排序結(jié)果:
想要購(gòu)買(mǎi)Navicat for PostgreSQL正版授權(quán),或了解更多產(chǎn)品信息請(qǐng)點(diǎn)擊
掃描關(guān)注慧聚IT微信公眾號(hào),及時(shí)獲取最新動(dòng)態(tài)及最新資訊
本站文章除注明轉(zhuǎn)載外,均為本站原創(chuàng)或翻譯。歡迎任何形式的轉(zhuǎn)載,但請(qǐng)務(wù)必注明出處、不得修改原文相關(guān)鏈接,如果存在內(nèi)容上的異議請(qǐng)郵件反饋至chenjj@fc6vip.cn