小知识-SQL 自定义排序

问题场景

在一次写业务的过程中,发现在使用 sql 查询数据的时候,不是按照我希望的顺序进行排序的,而是根据系统顺序进行排序的.o(╥﹏╥)o

SELECT * FROM table_name WHERE id in (3,4,1,2)

我以为不加ORDER BY进行排序也会根据给定的顺序输出数据,太想当然了!

自定义查询

  • FIELD
  • INSTR
  • LOCATE
# FIELD
SELECT * FROM table_name WHERE id in (3,4,1,2) ORDER BY FIELD (需要排序的字段,自定义的顺序)

# 根据 id 进行排序,自定义的顺序为 2,3,1,4
SELECT * FROM table_name WHERE id in (3,4,1,2) ORDER BY FIELD (id,2,3,1,4)

# INSTR
# 按照 id 的 2,4,1,3 顺序进行排序
SELECT * FROM table_name WHERE id in (3,4,1,2) ORDER BY INSTR('2,4,1,3',id)

# LOCATE
SELECT * FROM table_name WHERE id in (1,2,3,4) ORDER BY LOCATE(id,'2,4,3,1')

peewee 中使用自定义排序

# SQL 函数可以拼接 sql 语句
from peewee import SQL
# ids是一个 list
ids= [2,3,4,1]
str_ids = ",".join(ids)
query = MyModel.select().where(MyModel.id << ids).order_by(SQL('field(id,%s) % str_ids'))
Image placeholder
bollworm
未设置
  63人点赞

没有讨论,发表一下自己的看法吧

推荐文章
云原生时代,分布式系统设计必备知识图谱(内含22个知识点)

作者|杨泽强(竹涧)阿里云技术专家我们身处于一个充斥着分布式系统解决方案的计算机时代,无论是支付宝、微信这样顶级流量产品、还是区块链、IOT等热门概念、抑或如火如荼的容器生态技术如Kubernetes

可能是全网最好的MySQL重要知识点

什么是MySQL?MySQL是一种关系型数据库,在Java企业级开发中非常常用,因为MySQL是开源免费的,并且方便扩展。阿里巴巴数据库系统也大量用到了MySQL,因此它的稳定性是有保障的。MySQL

面试题总结:可能是全网最好的MySQL重要知识点

作者:Snailclimb 整理编辑:SegmentFault本文原载于SegmentFault专栏JavaGuide,如侵删。标题有点标题党的意思,但希望你在看了文章之后不会有这个想法——这篇文章是

mysql 查询按照中文进行排序

在mysql中我们使用orderby来实现查询排序,如:SELECT\*FROMmemberORDERBYidASC//查询用户表并按照id正序排序 SELECT\*FROMmemberORDERBY

MySQL 性能优化:8 种常见 SQL 错误用法!

1、LIMIT语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般DBA想到的办法是在type,name,create_time字段上加组合索引。这样条件排序都

为什么SQL正在击败NoSQL,这对未来的数据意味着什么

导读:经过多年的沉寂之后,今天的SQL正在复出。缘由如何?这对数据社区有什么影响?看看本文的分析。以下为译文。自从可以利用计算机做事以来,我们一直在收集的数据以指数级的速度在增长,因此对于数据存储、处

Oracle/云MySQL/MsSQL“大迁移”真相及最优方案

最近一段时间碰到一些数据迁移的项目,如:Oracle迁移到MySQL,MsSQL迁移到MySQL,云MySQL迁移到本地MySQL。对于这方面做了系统的整理。包括:迁移方案的选择、如何跳出迁移遇到的坑

一条SQL语句在MySQL中如何执行的

前两天发了一条SQL慢的原因有哪些,在那篇文章我没有说到优化器之类的,我觉得如果配合一条SQL是如何执行的,会更好,所以特地找了一篇。来源:JavaGuide  |作者:木木匠本篇文章会分析一个sql

SQL 已死,但 SQL 将永存!

在SQL被引入的47年中,它经历了许多数据库的诞生和消亡,也经历了许多数据处理方式的诞生和消亡。以下为译文:四十七年前,两位年轻的IBM研究人员在数据库上提出了一种新的语言,这是一种关系型语言,它奉行

SQL Server 2014的数据库引擎新增功能(参考sqlserver官方文档)

SQLServer2014数据库引擎引入了一些新功能和增强功能,这些功能可以提高设计、开发和维护数据存储系统的架构师、开发人员和管理员的能力和工作效率。  以下是 数据库引擎已增强的方面。数据库引擎功

mysql 进行update时,要更新的字段中有单引号或者双引号导致不能批量生成sql的问题

前言将数据从一张表迁移到另外一张表的过程中,通过mysql的concat方法批量生成sql时遇到了一个问题,即进行UPDATE更新操作时如果原表中的字段中包含单引号'或者双引号",那么就会生成不正确的

Spring Boot 中关于自定义异常处理的套路!

在SpringBoot项目中,异常统一处理,可以使用Spring中@ControllerAdvice来统一处理,也可以自己来定义异常处理方案。SpringBoot中,对异常的处理有一些默认的策略,我们

JSP如何自定义标签

JSP如何自定义标签自定义标签步骤:先定义标签处理类(如继承SimpleTagSupport类),再编写TLD文件(标签库描述库文件)。定义标签类可以编写一个实现SimpleTag接口的类,publi

使用Go语言在MacOS创建一个自定义的命令行工具

原文链接:https://idoubi.cc/posts/create-a-cli-tool-in-macos/ 使用MacOS做开发的朋友都知道,我们一般会使用Homebrew做软件包管理,经常会用

自定义组件实现v-model双向数据绑定

我们都清楚v-model其实就是vue的一个语法糖,用于在表单控件或者组件上创建双向绑定。//表单控件上使用v-model {{name}} exportdefault{ data()

网易裁员事件,我给大家挖了这些法律知识,建议收藏!

网易裁员事件搞得沸沸扬扬的,这两天网易也对事件进行了回复,基本上可以确认事情属实,不了解事件经过的朋友可先看这篇文章:《有态度的网易(暴力裁员),难道这就是网易的“态度”?》。从这个事件中其实也暴露了

看《长安十二时辰》可以了解哪些算法知识

最近,小吴在追一部古装剧—-《长安十二时辰》。故事讲得是在上元节前夕,长安城混入可疑人员,身陷囹圄的张小敬临危受命,与少年天才李必携手在十二时辰内破除隐患。该剧的一大亮点就在于 时间很紧迫,需要在二十

亚马逊将公布超过最大会话和知识数据集,超400万字

4月1日,亚马逊宣布:他们计划向公众公开“TopicalChat”数据集,超410万单词21万句子的语料库将于2019年9月17日发布。该数据集是为参加AlexaPrizeSocialbotGrand

史上规模最大的中文知识图谱以及估值两个亿的 AI 核心代码

——大声告诉我,怎样才能可以让你变得更强?——充钱——???——都什么玩意?还有啥子咧?——充更多钱执迷不悟,无可救药了。所以,正确答案应该是什么呢?答:是知识。反正,说这些就是为了切入「知识」这个话

Vuex的一些常用知识点介绍

一、为什么要使用Vuex1、多个组件依赖同一个状态,使用组件之间通信方法会非常繁琐,例如多层嵌套组件。2、需要全局保存的数据,例如用户、权限信息,全局系统设置二、Vuex的五个核心属性1、state:

一些JavaScript 类(class)中需要了解的知识

JavaScript使用原型继承:每个对象都从原型对象继承属性和方法。在Java或Swift等语言中使用的传统类作为创建对象的蓝图,在JavaScript中不存在,原型继承仅处理对象。原型继承可以模拟

你需要的前端知识收集好了,请查收!

github地址记录学习成长收获的知识,不断进步,Front-end-go-on目前包含的模块有 HTML基础 CSS基础 JS基础 数据结构基础 Http基础 JS代码练习 算法代码练习 CSS代码

《零知识证明在区块链上的应用》

2019年11月26日,同济创业谷与PPIOCodeTalks联合举办了《创新X-区块链与创新创业》区块链技术分享会。在本次分享会中,我们有幸邀请到了四位重量级嘉宾来做主题分享。在本期文章中,我们先向

【跃迁之路】【868天】全栈工程师IT知识库更新记录(2019.1.3更新)

[叨叨两句] 跃迁之路整体迁移至GitHub做为开源项目,未来的更新提交都在那,其它地方只做更新记录的发布 该项目将定位为全栈工程师养成,目标是可以独立完成项目的全流程工作 项目地址https://g

css 常用知识点全在这里了。哪位大侠还能补充?

努力学习与总结是对自己能力的提升,也希望能帮助到同学们。BFC块状格式化上下文(blockformattingcontext)简称BFC:是页面上的一个隔离的独立容器,容器里面的子元素不会影响到外面的