详解MySQL中Order By多字段排序规则
技术百科
小云云
发布时间:2017-12-14
浏览: 次 想了解一下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
结果如下:
| name | hex(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 |
| 高二 | 我的 |
| 高一 | 我是 |
| 高二 | 我们 |
| 中一 | 我 |
| 中二 | 你 |
| code | name |
| 高二 | 我们 |
| 高二 | 我的 |
| 高一 | 我是 |
| 中二 | 你 |
| 中一 | 我 |
结果很明显:单一字段排序的时候,其他字段出现的顺序是自然排序的。
下面我们看看多字段的排序
-- 按照code, name进行降序排序 select * from a order by code, name desc;
| code | 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进行降序排序。
另外我们还可以使用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
# 降序
# 高一
# 高二
# 很明显
相关栏目:
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
AI推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
SEO优化<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
技术百科<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
谷歌推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
百度推广<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
网络营销<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
案例网站<?muma echo $count; ?>
】
<?muma
$count = M('archives')->where(['typeid'=>$field['id']])->count();
?>
【
精选文章<?muma echo $count; ?>
】
相关推荐
- 如何在Mac上搭建Golang开发环境_使用Hom
- Python文本编码与解码_跨平台解析说明【指导】
- c++ unordered_map怎么用 c++哈
- Win11怎么清理C盘虚拟内存_Win11清理虚拟
- Win11怎么开启游戏工具栏_Windows11
- 如何在Golang中理解指针比较_Golang地址
- 如何高效获取循环末次生成的 NumPy 数组最后一
- Windows 11如何开启文件夹加密(EFS)_
- Win11如何卸载OneDrive_Win11卸载
- VSC怎么快速定位PHP错误行_错误追踪设置法【方
- Python模块的__name__属性如何由导入方
- php增删改查报错1054怎么办_字段名错误排查修
- c++中如何使用auto关键字_c++11类型推导
- 如何在Golang中优化文件读写性能_使用缓冲和并
- Python列表推导式与字典推导式教程_简化代码高
- Python文件和流处理指南_高效读写大体积数据文
- Win11开始菜单打不开_修复Windows 11
- Windows蓝屏BAD_POOL_HEADER故
- PHP主流架构怎么处理表单验证_规则与自定义【技巧
- Go 中 := 短变量声明的类型推导机制详解
- Win11怎么开启游戏模式_Win11优化游戏帧数
- Win11怎么设置组合键快捷方式_Windows1
- PHP主流架构怎么集成Redis缓存_配置步骤【方
- Win11怎么关闭自动修复_跳过Win11开机自动
- Mac如何备份到iCloud_Mac桌面与文稿文件
- MAC的“接续互通”功能无法使用怎么办_MAC检查
- MAC如何安装Git版本控制工具_MAC开发环境配
- Python数据挖掘进阶教程_分类回归与聚类案例解
- Win11怎么更改管理员名字 Win11修改账户名
- Linux怎么设置磁盘配额_Linux系统Quot
- Python集合操作技巧_高效去重解析【教程】
- 如何在包含多值的列中精准搜索指定演员?
- Win11怎么更改任务栏位置_修改注册表将Win1
- 如何自定义Windows终端的默认配置文件?(Po
- php485在php5.6下能用吗_php485旧
- Win10怎么卸载金山毒霸_Win10彻底卸载金山
- Win11怎么设置开机问候语_自定义Win11锁屏
- Win11怎么设置任务栏透明_Windows11使
- C++ static_cast和dynamic_c
- Windows10怎样连接蓝牙设备_Windows
- PythonFastAPI项目实战教程_API接口
- Win11如何设置开机自动联网 Win11宽带连接
- Win11怎么查看已连接wifi密码 Win11查
- Mac版Final Cut Pro入门_Mac视频
- Python网络异常模拟_测试说明【指导】
- Win10怎么查看内存时序参数_Win10CPU-
- SAX解析器是什么,它与DOM在处理大型XML文件
- Win11怎么更改盘符_Win11磁盘管理修改驱动
- 如何用列表一次性对 DataFrame 的指定列应
- 如何使用Golang处理静态文件缓存_提高页面加载

into a values('高二', '我的');
QQ客服