基金会网站模板,人力资源公司简介模板,企业管理咨询有限公司是干嘛的,苏州公司注册地址bitsCN.comIN条件结果顺序问题项目中需要记录用户的浏览历史#xff0c;我的意见是前端直接存cookie里#xff0c;可是前端说cookie内容太多#xff0c;要求传递id#xff0c;后端返回数据#xff0c;结果就产生如下的问题。1.据前端说#xff0c;url中的数组传递是无序的…bitsCN.comIN条件结果顺序问题项目中需要记录用户的浏览历史我的意见是前端直接存cookie里可是前端说cookie内容太多要求传递id后端返回数据结果就产生如下的问题。1.据前端说url中的数组传递是无序的(其实我纳闷为什么)2.传递到后端的id使用SQL语句中的in条件但是返回的顺序却是该id的增序而不是前端传递的id顺序在网上找到了解决办法原文如下有个场景一个几万条记录的表主键是 id我想从表中取 id 为 30208040 的几条记录。注意30208040是我预期的顺序我希望 MySQL 按这样的顺序返回记录。于是我这样写 SQLSELECT * 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中文网转载请注明出处感谢您的尊重