MySQL中Order By多字段排序规则的示例分析

58次阅读
没有评论

共计 1779 个字符,预计需要花费 5 分钟才能阅读完成。

丸趣 TV 小编给大家分享一下 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 的结果

codename 高二我的高一我是高二我们中一我中二你 codename 高二我们高二我的高一我是中二你中一我

结果很明显:单一字段排序的时候,其他字段出现的顺序是自然排序的。

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

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

codename 中一我中二你高一我是高二我的高二我们

结果如下:首先谢谢 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

codename 高二我的高二我们高一我是中二你中一我

很明显,在这个测试例子上来看,order by concat(code, name) desc 的效果等同于 order by code desc, name desc

以上是“MySQL 中 Order By 多字段排序规则的示例分析”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注丸趣 TV 行业资讯频道!

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-04发表,共计1779字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)