mysql in 保持顺序_IN条件结果顺序问题_MySQL
bitsCN.com
IN条件结果顺序问题
项目中需要记录用户的浏览历史,我的意见是前端直接存cookie里,可是前端说cookie内容太多,要求传递id,后端返回数据,结果就产生如下的问题。
1.据前端说,url中的数组传递是无序的(其实我纳闷,为什么)
2.传递到后端的id,使用SQL语句中的in条件,但是返回的顺序却是该id的增序,而不是前端传递的id顺序
在网上找到了解决办法,原文如下:
有个场景,一个几万条记录的表,主键是 id,我想从表中取 id 为 30,20,80,40 的几条记录。
注意,30,20,80,40,是我预期的顺序,我希望 MySQL 按这样的顺序返回记录。
于是我这样写 SQL:
SELECT * FROM my_table WHERE id IN (30, 20, 80, 40);
结果是,他没有按我给的顺序返回。
怎么办?
查到了 FIELD() 函数。
FIELD(str,str1,str2,str3,...)
Returns the index (position) of str in the str1, str2, str3, ... list. Returns 0 if str is not found.
把 SQL 语句改写为:
SELECT * FROM my_table WHERE id IN (30, 20, 80, 40) ORDER BY FIELD(id, 30, 20, 80, 40);
排序过程是:
把选出的记录的 id 在 FIELD 列表中进行查找,并返回位置,以位置作为排序依据。
这样的用法,会导致 Using filesort,是效率很低的排序方式。除非数据变化频率很低,或者有长时间的缓存,否则不建议用这样的方式排序。
把 MySQL 返回的结果,用 PHP 在内存中按 id 顺序重新排列,是个不错的优化方案。bitsCN.com
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
mysql in 保持顺序_IN条件结果顺序问题_MySQL相关推荐
- oracle和mysql查询条件排序_Oracle数据库中ORDERBY排序和查询按IN条件的顺序输出
ORDER BY非稳定的排序提一个问题: oracle在order by 排序时,是稳定排序算法吗? 发现用一个type进行排序后,做分页查询,第一页的数据和第二页的数据有重复 怀疑是order by ...
- MySQL查询时条件的顺序_mysql中查询条件的先后顺序问题?
听一个讲座,说查询条件的顺序影响查询速度,比如一个先运行一个高门槛的条件,后低门槛,运行速度会相对快,请问有这种事么? 那么我在写thinkphp的查询语句的时候,是不是应该把高门槛的放在前面查询? ...
- mysql 执行顺序 SQL语句执行顺序分析
最近在做一个数据库的大作业,算是复习了下MySql里面比较复杂的一些语句的用法,如Left Join之类的.在这里就不对具体语法进行记录了,希望能在以后经常用到,而不是隔好长时间用一次.在这里就记录下 ...
- sql语句 where 后条件执行顺序
曾经面试时.被问到过这个问题.结合网上的知识,整理如下: 针对mysql,其条件执行顺序是 从左往右,自上而下: 针对orcale,其条件执行顺序是从右往左,自下而上.
- java 类型转换顺序_Java类型转换,顺序结构及条件结构,循环结构
一.Java类型转换 转换类型: 1.自动类型转换:把小的放到大的里面 2.强制类型转换:把大的放到小的里面 3.把字符串类型转换成其他数据类型(使用对应包装类的parsexxx()方法) 同类型转换 ...
- mysql 触发器条件判断偶尔失效_mysql┃多个角度说明sql优化,让你吊打面试官!...
正文约: 4744字 预计阅读时间: 12分钟 文章首发于我的微信公众号:moon聊技术,欢迎大家关注 mysql┃多个角度说明sql优化,让你吊打面试官! 目录 目录 前言 正文 1.表结构优化● ...
- C++primer第九章 顺序容器 9.1 顺序容器概述 9.2容器库概览
一个容器就是一些特定类型对象的集合.顺序容器(sequentialcontainer)为程序员提供了控制元素存储和访问顺序的能力.这种顺序不依赖于元素的值,而是与元素加入容器 时的位置相对应.与之相对 ...
- 聊一聊顺序消息(RocketMQ顺序消息的实现机制)
本文来自:https://www.cnblogs.com/hzmark/p/orderly_message.html 当我们说顺序时,我们在说什么? 日常思维中,顺序大部分情况会和时间关联起来,即时间 ...
- 1.c++中初始化列表和构造函数初始化的区别是什么?2.类的成员变量的初始化顺序是按照声明顺序吗?
初始化列表和构造函数初始化的区别是什么? 初始化和赋值对内置类型的成员没有太大的区别,在成员初始化列表和构造函数体内进行,在性能和结果上都是一样的.只有一些需要注意的事项 初始化列表一般情况如下: D ...
最新文章
- linux热插拔原理,.NET Core 的热插拔机制的深入探索
- Android自定义属性,format详解
- layui删除后刷新表格_LayUi前端框架删除数据缓存问题(解决删除后刷新页面内容又会显示问题)...
- 800多名各国院士热忱参与 第三届“科学探索奖”名单公布
- left join 索引失效无条件_从零开始学数据分析-mysql索引优化方案
- datatable把一个LIst的数据放入两个colum防止窜行的做法
- 微软 CEO 纳德拉痛失爱子
- Android SDK 开发——发布使用踩坑之路
- Android Studio在创建项目是一直处于building “project name”gradle project info的解决办法...
- javascript:document.all document.getElementsByName
- Extjs store用法详解
- Pointer Networks简介及其应用(格式化)
- Pigx官方文档地址
- 【NLP】文本情感分类
- Mysql 不包含某个字符
- 广东第二师范学院学计算机,广东第二师范学院计算机科学系党总支一行来我院调研交流...
- Web地图服务、WMS 请求方式、网络地图服务(WMS)的三大操作
- 浙江大学计算机学院复试拟录取名单,浙江大学计算机学院2015年考研复试拟录名单...
- 固态硬盘的计算机需要进行磁盘碎片整理吗,有问有答:固态硬盘需要磁盘碎片整理吗?...
- adb关闭手机系统自动更新
热门文章
- javascript 唯一值的集合 Set对象
- IOS UISwitch 组件的使用
- java常用的缓存_java 常用缓存 - 只对肉有感觉的个人空间 - OSCHINA - 中文开源技术交流社区...
- 【OpenCV 例程200篇】69. 连续非周期信号的傅立叶系数
- 【OpenCV 例程200篇】64. 图像锐化——Sobel 算子
- mysql数据库多少张表会影响性能_mysql数据库多少张表会影响性能
- flog和flag_FLAG:写作,英语和持续学习
- centos6.5装mysql好难_centos 6.5装mysql5.7
- 白盒测试六种方法案例分析
- html中的文本格式化标签+多媒体标签+关于IE浏览器兼容的问题(干货!)