濮阳杆衣贸易有限公司

主頁 > 知識(shí)庫 > MySQL中Order By多字段排序規(guī)則代碼示例

MySQL中Order By多字段排序規(guī)則代碼示例

熱門標(biāo)簽:地圖標(biāo)注圖標(biāo)素材入駐 電銷機(jī)器人價(jià)格多少錢一臺(tái) 怎么辦理400電話呢 電話機(jī)器人免費(fèi)嗎 怎么申請(qǐng)400電話申請(qǐng) 400電話申請(qǐng)什么好 好搜地圖標(biāo)注 龍圖酒吧地圖標(biāo)注 百度地圖標(biāo)注地方備注

說在前面

突發(fā)奇想,想了解一下mysql order by排序是以什么規(guī)則進(jìn)行的? 好了,話不多說,直接進(jìn)入正題吧。

MySql order by 單字段

建一測(cè)試表如下:

CREATE TABLE `a` ( 
 `code` varchar(255) DEFAULT NULL, 
 `name` varchar(255) DEFAULT NULL 
) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
INSERT into a values('中一', '我'); 
INSERT into a values('中二', '你'); 
INSERT into a values('高一', '我是'); 
INSERT into a values('高二', '我們'); 
INSERT into a values('高二', '我的');
 

測(cè)試語句如下:

-- hex(): 獲取16進(jìn)制字節(jié)碼 
select name, hex(name) from a order by name desc

結(jié)果如下:

name hex(name)
我的 E68891E79A84
我是 E68891E698AF
我們 E68891E4BBAC
E68891
E4BDA0

很明顯,MySQL中的排序,是以字節(jié)碼進(jìn)行排序的,當(dāng)?shù)谝粋€(gè)字相同的時(shí)候,比較第二個(gè)字的字節(jié)碼, 一次類推

MySql order by 多字段

有比較,才有想法,有比較才有進(jìn)步,因此我們先把單字段的降序排序結(jié)果列出來,然后在看看兩個(gè)字段的降序排序氣礦,我們就可以從中分析出其中道理來。

-- 按照name進(jìn)行降序排序 
select * from a order by name desc; 
-- 按照code進(jìn)行降序排序 
select * from a order by code desc; 

左邊是order by name desc, 右邊是order by code desc的結(jié)果

code name
高二 我的
高一 我是
高二 我們
中一
中二
code name
高二 我們
高二 我的
高一 我是
中二
中一

結(jié)果很明顯:?jiǎn)我蛔侄闻判虻臅r(shí)候,其他字段出現(xiàn)的順序是自然排序的。

下面我們看看多字段的排序

-- 按照code, name進(jìn)行降序排序 
select * from a order by code, name desc; 

code name
中一
中二
高一 我是
高二 我的
高二 我們

結(jié)果如下:首先謝謝qq_27837327和MjayTang 的,本人在這里一次測(cè)試, 原文說這個(gè)sql排序無效的說法是錯(cuò)誤的。實(shí)際上說order by code,name desc等同于order by code asc, name desc

經(jīng)測(cè)試發(fā)現(xiàn),select * from a order by code and name desc 排序效果依然無效。

我們?cè)诳纯聪旅娴恼Z句

-- 按照code, name進(jìn)行降序排序 
select * from a order by code desc, name desc; 
-- 該語句的效果等同于下面的語句, 其中1、2分別對(duì)應(yīng)的是code、name 
select code, name from a order by 1 desc, 2 desc; 

code name
高二 我的
高二 我們
高一 我是
中二
中一

對(duì)比code,name的單個(gè)字段降序排序,我們可以發(fā)現(xiàn), 使用 order by code desc, name desc的時(shí)候,MySQL會(huì)先以code進(jìn)行降序排序,在code進(jìn)行降序排序該基礎(chǔ)上,再使用name進(jìn)行降序排序。

另外我們還可以使用contat函數(shù)把多個(gè)字段拼接起來,在進(jìn)行排序。但是要保證字段不能為null。下面我們來看一下concat的sql語句和結(jié)果。

select * from a order by concat(code,name) desc 

code name
高二 我的
高二 我們
高一 我是
中二
中一

很明顯,在這個(gè)測(cè)試?yán)由蟻砜矗?order by concat(code, name) desc的效果等同于 order by code desc, name desc

總結(jié)

以上就是本文的全部內(nèi)容,希望對(duì)大家有所幫助。歡迎參閱:幾個(gè)比較重要的MySQL變量、MySQL主庫binlog(master-log)與從庫relay-log關(guān)系代碼詳解、MySQL prepare原理詳解等,有什么問題可以隨時(shí)留言,歡迎大家交流討論。

您可能感興趣的文章:
  • MySQL Order by 語句用法與優(yōu)化詳解
  • 深入解析mysql中order by與group by的順序問題
  • MySQL中union和order by同時(shí)使用的實(shí)現(xiàn)方法
  • MySQL Order By語法介紹
  • MySQL Order By索引優(yōu)化方法
  • MySQL order by性能優(yōu)化方法實(shí)例
  • 詳談mysql order by in 的字符順序(推薦)
  • MySQL ORDER BY 的實(shí)現(xiàn)分析
  • MySQL Order By Rand()效率分析
  • MySQL不使用order by實(shí)現(xiàn)排名的三種思路總結(jié)

標(biāo)簽:防疫工作 撫順 內(nèi)江 浙江 溫州 固原 汕尾 廣西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中Order By多字段排序規(guī)則代碼示例》,本文關(guān)鍵詞  MySQL,中,Order,多,字段,排序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《MySQL中Order By多字段排序規(guī)則代碼示例》相關(guān)的同類信息!
  • 本頁收集關(guān)于MySQL中Order By多字段排序規(guī)則代碼示例的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    临安市| 英山县| 朔州市| 磴口县| 布尔津县| 镇安县| 开阳县| 大洼县| 阿坝县| 永修县| 都安| 井研县| 定州市| 句容市| 垫江县| 永吉县| 湖州市| 富顺县| 托里县| 聂拉木县| 庆元县| 广德县| 彰武县| 广宁县| 廉江市| 阳信县| 建湖县| 巴彦淖尔市| 长葛市| 东莞市| 股票| 蒲城县| 新乡县| 沙河市| 京山县| 阿鲁科尔沁旗| 洪洞县| 汝城县| 上思县| 虞城县| 青神县|