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
-- 按照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
高二
我的
高一
#我是
高二
我們
#中一
#中二
你
#code
name
高二
我們
高二
我的
高一
我是
中二
你
#我
結果很明顯:單一欄位排序的時候,其他欄位出現的順序是自然排序的。
#下面我們來看看多字段的排序
-- 按照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;
登入後複製
##code
name
高二
我的
#我們
高一
我是
中二
你
#我
比較code,name的單一欄位降序排序,我們可以發現, 使用order by code desc, name desc的時候,MySQL會先以code進行降序排序,在code進行降序排序該基礎上,再使用name進行降序排序。
###你############中一######我############ ###很明顯,在這個測試範例上來看, order by concat(code, name) desc的效果等同於order by code desc, name desc###### 相關推薦:######### #MySQL Order by 語句優化程式碼詳解############mysql中order by in 的字元順序(推薦)############MySQL Order By用法分享## ####