[筆記] MYSQL/PostgreSQL語法中的LIMIT、OFFSET用法範例說明


SQL中的「LIMIT」語法可以限制傳回的資料筆數,但根據「1Keydata」的說法,使用SQL的LIMIT語句時通常會伴隨著「ORDER BY」,若沒有指定Order By的話,那麼資料的排序就會以資料庫的預設值為主,所以這有可能會造成取回的資料不對,因此建議在使用LIMIT時最好還是加上Order By,以確保資料正確。

示範表格:表格名稱為「DemoTable

● 範例一:select * from DemoTable order by id

直接用order by以「id」的欄位做排序

● 範例二:select * from DemoTable order by id limit 5

語法說明:LIMIT 後面直接加一個整數,代表限制回傳回幾筆,例如:limit 5代表只回傳5筆

● 範例三:select * from DemoTable order by id limit 2,4

語法說明:LIMIT 後面接[index, count],例如上方的「limit 2,4」,這代表:

.Index:從哪個index開始傳回,Index是從0開始算,若以這個範例來看,資料會由第3筆資料開始回傳(2+1=3)
.count:由Index開始,總共要傳回幾筆資料,以此範例來說,總共會傳回第3、4、5、6共四筆資料

查詢出來的結果同範例四,圖片可參考下方。

● 範例四:select * from DemoTable order by id limit 4 offset 2

有些SQL的資料庫不支援[index,count]的格式(例如PostgreSQL),必需要用OFFSET來取代,OFFSET可以把它想成要略過筆數,以offset 2為例,便可想成在找到的資料筆數中略過前二筆,即是由第三筆開始回傳,因此資料會同範例三,或者把offset想成範例三的index也行