首頁  >  文章  >  資料庫  >  詳解MySQL中Order By多字段排序規則

詳解MySQL中Order By多字段排序規則

小云云
小云云原創
2017-12-14 11:54:254216瀏覽

想了解一下mysql order by排序是以什麼規則進行的? 本文主要介紹了MySQL中Order By多字段排序規則代碼範例,小編覺得挺不錯的,這裡給大家分享下,需要的朋友可以參考,希望能幫助到大家。

MySql order by 單一欄位

建立測試表如下:


##

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('高二', '我的');

測試語句如下:



#

-- hex(): 获取16进制字节码 
select name, hex(name) from a order by name desc

結果如下:


namehex(name)我的E68891E79A84我是E68891E698AF我們E68891E4BBAC#E68891你E4BDA0
#很明顯,MySQL中的排序,是用字節碼排序的,當第一個字相同的時候,比較第二個字的字節碼, 一次類推


#MySql order by 多字段

有比較,才有想法,有比較才有進步,因此我們先把單一字段的降序排序結果列出來,然後在看看兩個字段的降序排序氣礦,我們就可以從中分析出其中道理來。



-- 按照name进行降序排序 
select * from a order by name desc; 
-- 按照code进行降序排序 
select * from a order by code desc;

左邊是order by name desc, 右邊是order by code desc的結果

code name高二我的高一#我是高二我們#中一#中二你
#codename我們我的我是你#我
高二
高二
高一
中二


結果很明顯:單一欄位排序的時候,其他欄位出現的順序是自然排序的。

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

-- 按照code, name进行降序排序 
select * from a order by code, name desc;
name 我你我是我的我們
中一
#中二
#高一
高二
高二


結果如下:首先謝謝qq_27837327和MjayTang 的,自己在這裡一次測試, 原文說這個sql排序無效的說法是錯誤的。其實說order by code,name desc等同於order by code asc, name desc


經過測試發現,select * from a order by code and name desc 排序效果依然無效。

我們在看下面的語句

-- 按照code, name进行降序排序 
select * from a order by code desc, name desc; 
-- 该语句的效果等同于下面的语句, 其中1、2分别对应的是code、name 
select code, name from a order by 1 desc, 2 desc;
##codename高二我的#我們高一我是中二



#我比較code,name的單一欄位降序排序,我們可以發現, 使用order by code desc, name desc的時候,MySQL會先以code進行降序排序,在code進行降序排序該基礎上,再使用name進行降序排序。 另外我們還可以使用contat函數把多個欄位拼接起來,在進行排序。但是要保證欄位不能為null。下面我們來看看concat的sql語句和結果。
select * from a order by concat(code,name) desc
code#name
##高二
我的

高二

我們

#高一##我是

中二

###你############中一######我############ ###很明顯,在這個測試範例上來看, order by concat(code, name) desc的效果等同於order by code desc, name desc###### 相關推薦:######### #MySQL Order by 語句優化程式碼詳解############mysql中order by in 的字元順序(推薦)############MySQL Order By用法分享## ####

以上是詳解MySQL中Order By多字段排序規則的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn