文档章节

mysql的order by隐形陷阱

A灵云A
 A灵云A
发布于 2017/02/17 15:56
字数 242
阅读 7
收藏 0

说来忏愧,做了5年php,以为php+mysql网站开发已经完全掌握了,谁知道今天被个bug打脸!

bug描述:展示用户数据时,按年龄分页排序,结果发现有数据重复的情况

我弄了两小时,做各种测试都没搞明白是什么原因导致的。

后来记录下sql日志,拿同样一条sql放到数据库运行结果发现:数据和php查询的不一样。

完全一样的sql,返回就是不一样,后来想到这些数据有个共同点,排序字段:年龄字段的值一样,我试着加上id排序,果然好了。

原来当排序字段相同时,返回排序结果不固定,查询的时候排序字段一定要增加一个不相同的字段

order by age desc,id desc

© 著作权归作者所有

共有 人打赏支持
A灵云A
粉丝 1
博文 40
码字总数 8517
作品 0
海淀
程序员
私信 提问
mysql group_concat合并行用法和问题

还有分隔符还可以自定义,默认是以“,”作为分隔符,若要改为“ ”,则使用SEPARATOR来指定, 例如: mysql> SELECT student_id, GROUP_CONCAT(courses_id SEPARATOR ' ') AS courses FROM s...

豆花饭烧土豆
2016/09/08
9
0
Mysql order by与limit混用陷阱

在Mysql中我们常常用order by来进行排序,使用limit来进行分页,当需要先排序后分页时我们往往使用类似的写法select * from 表名 order by 排序字段 limt M,N。但是这种写法却隐藏着较深的使...

architect刘源源
03/05
0
0
MySQL函数GROUP_CONCAT

该函数返回带有来自一个组的连接的非NULL值的字符串结果。该函数是一个增强的Sybase SQL Anywhere支持的基本LIST()函数。 语法结构: GROUPCONCAT([DISTINCT] expr [,expr ...] [ORDER BY {u...

舆图易稿
2015/01/07
0
0
mysql隐式转换造成索引失效的事故总结

隐式转换导致索引失效.这一点应当引起重视.也是开发中经常会犯的错误. 由于表的字段tumdn定义为varchar2(20),但在查询时把该字段作为number类型以where条件传给mysql,这样会导致索引失效. 错...

lover007
2014/03/07
0
0
关于 MySQL 8.0 新特性“隐藏索引”的一点思考

MySQL 8.0有一个称为“隐藏索引”的新功能,它允许快速启用/禁用MySQL Optimizer使用的索引。 在此分享一些对这个新功能的首次使用经验和想法。 对我们有什么用? 一是如果你想删除一个索引,...

andylhz
2016/11/03
0
0

没有更多内容

加载失败,请刷新页面

加载更多

初探Spring Cloud(一)

1. 什么是Spring Cloud? Spring提供了一系列工具,可以帮助开发人员迅速搭建分布式系统中的公共组件(比如:配置管理,服务发现,断路器,智能路由,微代理,控制总线,一次性令牌,全局锁,...

__HuWei
19分钟前
0
0
Mac配置ssh免密钥登录

Mac终端每次使用ssh -p 22 user@ip登录很是麻烦,下面介绍配置ssh免密钥登录: cd ~/.ssh下创建conf文件,写入以下配置: Host test HostName ip Port 22 IdentityFile /Users/t/key/test.p...

littlemesieV
34分钟前
1
0
Spark2.0操作ES

ES提供了支持包来方便的操作ES。首先添加ES的依赖maven: <dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch-spark-20_2.11</artifactId> <version>6.2.0</ver......

守望者之父
36分钟前
1
0
专业术语

1、防御性编程 DruidDataSource类有一个init方法,我们在spring中配置druid时,都会指定 init-method='init'. 而且DruidDataSource也在其他地方,诸如getConnection()方法里作了防御性编程, 也就...

still5656
38分钟前
1
0
微信开发--测试账号相关

1、微信公众平台选择代码开发后,其平台上的部分功能会不可用 可在开发者工具中选择开通测试账号,进行相关的功能调试(测试账号出微信支付不可调试外,其他功能基本上都可以调试) 2、测试账号...

Code辉
44分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部