MySQL中的ORDER BY問題
MySQL中的ORDER BY?
當(dāng)我們使用SELECT語(yǔ)句查詢某個(gè)數(shù)據(jù)庫(kù)的單個(gè)列時(shí),如果不排序,數(shù)據(jù)一般將以它在底層表中出現(xiàn)的順序顯示。
這可以是數(shù)據(jù)最初添加到表中的順序。
但是,如果數(shù)據(jù)后來(lái)進(jìn)行過(guò)更新或刪除,則此順序?qū)?huì)收到MySQL重用回收存儲(chǔ)空間的影響。
因此,如果不明確控制的話,不能(也不應(yīng)該)依賴該排序順序。
關(guān)系數(shù)據(jù)庫(kù)設(shè)計(jì)理論認(rèn)為,如果不明確規(guī)定排序順序,則不應(yīng)該假定檢索出的數(shù)據(jù)的順序有意義。
?為了明確地排序用SELECT語(yǔ)句檢索出的數(shù)據(jù),可以使用ORDER BY子句。
ORDER BY子句取一個(gè)或多個(gè)列的名字,據(jù)此對(duì)輸出進(jìn)行排序。
假設(shè)我們有這樣的一張學(xué)生信息表如下

首先只用SELECT語(yǔ)句來(lái)查詢學(xué)生的年齡信息

我們可以看到,在沒有對(duì)檢索出的數(shù)據(jù)進(jìn)行排序的情況下,顯示的就是我們最初將數(shù)據(jù)添加到表中的順序。
我們使用ORDER BY子句對(duì)檢索的結(jié)果進(jìn)行排序

我們可以看到,檢索的結(jié)果進(jìn)行了一個(gè)升序的排序。
在默認(rèn)情況下ORDER BY對(duì)檢索的結(jié)果進(jìn)行升序(ASC)排序,我們也可以把它改為降序(DESC)排序:

但是,在大多數(shù)情況下我們需要按不止一個(gè)列進(jìn)行數(shù)據(jù)的排序,這時(shí)也可以使用ORDER BY子句進(jìn)行排序。
例如我們想要對(duì)學(xué)生先按班級(jí)排序
同一個(gè)班級(jí)中的學(xué)生再按年齡排序:

可以看到,檢索到的數(shù)據(jù)先按照班級(jí)升序?qū)W(xué)生進(jìn)行了排序,對(duì)于同一個(gè)班級(jí)的學(xué)生,按照年齡的升序再進(jìn)行排序。
同理,我們也可以先進(jìn)行班級(jí)的升序排序,再進(jìn)行年齡的降序排序:

綜上我們可以知道,ORDER BY子句可以對(duì)一個(gè)或多個(gè)列進(jìn)行升序或降序的排序,并且ASC和DESC只對(duì)直接位于它前面的列名起作用。
ORDER BY子句還可以和LIMIT一起使用,由此可以找出檢索結(jié)果中的最大值或者最小值。
比如我們可以找到所有學(xué)生中年齡最小的同學(xué)

注意:
在給出ORDER BY子句時(shí),應(yīng)該保證它位于FROM子句之后。
如果使用LIMIT,那么LIMIT必須位于ORDER BY之后。
使用子句的次序不對(duì)將產(chǎn)生錯(cuò)誤信息。那么LIMIT必須位于ORDER BY之后。
使用子句的次序不對(duì)將產(chǎn)生錯(cuò)誤信息。
總結(jié)
?以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
MySQL用truncate命令快速清空一個(gè)數(shù)據(jù)庫(kù)中的所有表
這篇文章主要介紹了MySQL用truncate命令快速清空一個(gè)數(shù)據(jù)庫(kù)中的所有表,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
當(dāng)mysqlbinlog版本與mysql不一致時(shí)可能導(dǎo)致出哪些問題
這篇文章主要介紹了當(dāng)mysql服務(wù)器為mysql5.6時(shí),mysqlbinlog版本不對(duì)可能導(dǎo)致出哪些問題,下面通過(guò)模擬2種場(chǎng)景分析此類問題,需要的朋友可以參考下2015-07-07
MySQL約束和事務(wù)知識(shí)點(diǎn)詳細(xì)歸納
在關(guān)系型數(shù)據(jù)庫(kù)中,事務(wù)的重要性不言而喻,只要對(duì)數(shù)據(jù)庫(kù)稍有了解的人都知道事務(wù),下面這篇文章主要給大家介紹了關(guān)于MySQL約束和事務(wù)知識(shí)點(diǎn)歸納的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-04-04
mysql優(yōu)化的重要參數(shù) key_buffer_size table_cache
MySQL服務(wù)器端的參數(shù)有很多,但是對(duì)于大多數(shù)初學(xué)者來(lái)說(shuō),眾多的參數(shù)往往使得我們不知所措,但是哪些參數(shù)是需要我們調(diào)整的,哪些對(duì)服務(wù)器的性能影響最大呢2016-05-05
mysql實(shí)現(xiàn)表內(nèi)增加一個(gè)字段并賦值
這篇文章主要介紹了mysql實(shí)現(xiàn)表內(nèi)增加一個(gè)字段并賦值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09
MySQL數(shù)據(jù)庫(kù)自增主鍵的間隔不為1的解決方式
這篇文章主要介紹了MySQL數(shù)據(jù)庫(kù)自增主鍵的間隔不為1的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-12-12

