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é)果列出來(lái),然后在看看兩個(gè)字段的降序排序氣礦,我們就可以從中分析出其中道理來(lái)。
-- 按照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è)試, 原文說(shuō)這個(gè)sql排序無(wú)效的說(shuō)法是錯(cuò)誤的。實(shí)際上說(shuō)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 排序效果依然無(wú)效。
我們?cè)诳纯聪旅娴恼Z(yǔ)句
-- 按照code, name進(jìn)行降序排序 select * from a order by code desc, name desc; -- 該語(yǔ)句的效果等同于下面的語(yǔ)句, 其中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è)字段拼接起來(lái),在進(jìn)行排序。但是要保證字段不能為null。下面我們來(lái)看一下concat的sql語(yǔ)句和結(jié)果。
select * from a order by concat(code,name) desc
code | name |
高二 | 我的 |
高二 | 我們 |
高一 | 我是 |
中二 | 你 |
中一 | 我 |
很明顯,在這個(gè)測(cè)試?yán)由蟻?lái)看, order by concat(code, name) desc的效果等同于 order by code desc, name desc
總結(jié)
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家有所幫助。歡迎參閱:幾個(gè)比較重要的MySQL變量、MySQL主庫(kù)binlog(master-log)與從庫(kù)relay-log關(guān)系代碼詳解、MySQL prepare原理詳解等,有什么問(wèn)題可以隨時(shí)留言,歡迎大家交流討論。
標(biāo)簽:防疫工作 撫順 內(nèi)江 浙江 溫州 固原 汕尾 廣西
巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《MySQL中Order By多字段排序規(guī)則代碼示例》,本文關(guān)鍵詞 MySQL,中,Order,多,字段,排序,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。