本資料為產(chǎn)品崗位作為日常工作參考舌劳,語言口語化
At 2019/4/26 By David.Yang
介紹下重量級(jí)子句LIMIT
我們?cè)诠漶R蜂窩的時(shí)候霞幅,多少會(huì)看看游記攻略什么的漾抬,
你會(huì)發(fā)現(xiàn)馬蜂窩一頁給你10條左右的游記內(nèi)容,你要繼續(xù)看的話點(diǎn)分頁帆焕,
會(huì)給你下20條數(shù)據(jù)坡疼。
想象如果沒有分頁呢?
已下載給你百萬千萬篇游記灵妨,你會(huì)不會(huì)瘋了解阅?
你不瘋馬蜂窩的數(shù)據(jù)庫也得瘋。
那一頁一頁的數(shù)據(jù)返回固定的游記數(shù)量泌霍,是怎么實(shí)現(xiàn)的呢瓮钥?
這就是我們本篇的主角,LIMIT烹吵。
LIMIT在SELECT語句當(dāng)中是構(gòu)成查詢的子句,用來約束返回結(jié)果集的行數(shù)桨武。
LIMIT接受兩個(gè)參數(shù)肋拔,兩個(gè)參數(shù)都為0或正整數(shù)。
你每次拉分頁時(shí)是不是有第幾頁和每頁10篇這兩個(gè)參數(shù)呀酸?
他們跟LIMIT子句的參數(shù)有關(guān)凉蜂。
LIMIT子句講解
LIMIT字句語法
SELECT
? ? column1, column2, ...
FROM
? ? table_name
LIMIT OFFSET, SIZE;
? OFFSET 指定返回第一行的偏移量
? SIZE 指定返回行數(shù)最大值
看圖說話
默認(rèn)參數(shù)
當(dāng)你的LIMIT只有一個(gè)參數(shù)時(shí),也會(huì)發(fā)生作用性誉,這唯一的參數(shù)將從結(jié)果集的開頭返回最大的行數(shù)窿吩。
SELECT
? ? column1, column2, ...
FROM
? ? table_name
LIMIT SIZE;
等價(jià)于:
SELECT
? ? column1, column2, ...
FROM
? ? table_name
LIMIT 0, SIZE;
LIMIT獲取前SIZE行數(shù)據(jù)
控制LIMIT只賦予SIZE一個(gè)參數(shù)
SELECT
? ? column1, column2, ...
FROM
? ? table_name
LIMIT SIZE;
比如,查找前5個(gè)學(xué)生
SQL
SELECT
*
FROM
students
LIMIT 5;
得到前五行的學(xué)生
以上SQL等價(jià)于
SELECT
?????? *
FROM
?????? students
LIMIT 0, 5;
LIMIT與ORDER BY子句的配合使用
是错览,有了LIMIT我們是能夠分頁看游記了纫雁,
但是吧,我想看最新的倾哺,
我還想看最熱門的轧邪,有時(shí)候吧還想看游記出發(fā)時(shí)間比較近刽脖,
還想看…
“滾”
但其實(shí)是可以實(shí)現(xiàn)的啊忌愚?
我們這時(shí)候就需要配合使用ORDER BY曲管,排序字句了。
LIMIT 一般都會(huì)配合ORDER
BY子句使用硕糊,
ORDER BY子句將根據(jù)指定的條件對(duì)結(jié)果集實(shí)現(xiàn)排序院水,
然后通過LIMIT子句實(shí)現(xiàn)返回。
ORDER BY語法
ORDER BY column DESC/ASC
ORDER BY 后接需要排序的字段简十,表示按什么排序
DESC 降序排序檬某,由大到小
ASC 升序排序,由小到大
舉個(gè)例子勺远,比如
??
--按年齡找到前5的學(xué)生橙喘,使用此排序條件
SQL
SELECT
?????? *
FROM
?????? students
ORDER BY ageDESC
LIMIT 5;
??
--找到年齡最小的5名同學(xué)
SQL
SELECT
?????? *
FROM
?????? students
ORDER BY age ASC
LIMIT 5;
看,最小的郭襄才6歲呀胶逢。
使用LIMIT實(shí)現(xiàn)第N個(gè)最高值的獲取
在業(yè)務(wù)分析當(dāng)中厅瞎,通常需要在結(jié)果集當(dāng)中獲得第N個(gè)最高值,
比如成績(jī)第二初坠,銷量第五和簸,我們可以通過LIMIT來實(shí)現(xiàn)。
步驟:
- 按照關(guān)鍵字段進(jìn)行目標(biāo)排序碟刺,降序
- 使用LIMIT進(jìn)行行獲取
舉個(gè)例子
??
我們要獲取學(xué)生當(dāng)中年齡第2大的學(xué)生
- 第一個(gè)任務(wù)锁保,將學(xué)生按照年齡進(jìn)行排序(降序)
SELECT
*
FROM
students
ORDER BY age DESC;
- 第二個(gè)任務(wù),在排序的結(jié)果集當(dāng)中半沽,查找第二年齡大的學(xué)生爽柒,
使用LIMIT獲取學(xué)生。
既然要的是第二年齡大的學(xué)生者填,說明是從年齡從大到小的學(xué)生中獲取年齡第二大的學(xué)生浩村。
偏移量為1,獲取一行占哟。
SELECT
*
FROM
students
ORDER BY age DESC
LIMIT 1, 1;
是他靶氖!
本篇完結(jié)榨乎。
你現(xiàn)在多少理解LIMIT子句的特性怎燥,也改回使用了吧,
并且還捎帶學(xué)了點(diǎn)關(guān)于排序的內(nèi)容哦蜜暑,
后面講排序也就會(huì)更容易接受了铐姚。
Bye Bye.