小知识-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

GORM 中文文档_4.5. 原生 SQL 和 SQL 生成器

运行原生SQL 执行原生SQL时不能通过链式调用其他方法 db.Exec("DROPTABLEusers;") db.Exec("UPDATEordersSETshipped_at=?WHEREidI

【Golang+MySQL】记一次 MySQL 数据库迁移(一)

【Golang+mysql】记一次mysql数据库迁移(一)文章地址:https://github.com/stayfoo/stayfoo-hub一、准备目标: 腾讯云CVM自建mysql数据迁移到腾

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更新操作时如果原表中的字段中包含单引号'或者双引号",那么就会生成不正确的

Mysql中,21个写SQL的好习惯,你值得拥有呀

课程推荐:PHP开发工程师--学习猿地精品课程 前言每一个好习惯都是一笔财富,本文分SQL后悔药,SQL性能优化,SQL规范优雅三个方向,分享写SQL的21个好习惯,谢谢阅读,加油哈~github地址

GoWeb教程_13.2. 自定义路由器设计

HTTP路由 HTTP路由组件负责将HTTP请求交到对应的函数处理(或者是一个struct的方法),如前面小节所描述的结构图,路由在框架中相当于一个事件处理器,而这个事件包括: 用户请求的路径(pat

GORM 中文文档_5.2. 自定义 Logger

Logger Gorm建立了对Logger的支持,默认模式只会在错误发生的时候打印日志。 //开启Logger,以展示详细的日志 db.LogMode(true) //关闭Logger,不再展示任何

Laravel-自定义全局函数-ChinaCircle 优化版

看过很多关于helper辅助文件的教程我进行个进一步优化 很多教程都会说,你在composer.json这个文件中通过添加一个自动加载的文件,就可以实现这个需求。但我认为这不是一个好的方式,当你在he

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()

自定义列表

自定义列表: 一般用于对术语或者名词的揭示和描述. 格式: ........

javascript自定义类

课程推荐:学习猿地精品在线课--前端开发工程师--点击进入了解 1、创建自定义类 例1:使用原生Java语句定义一个人信息(姓名、年龄、婚否) 以上方法虽然可以定义一个人的相关信息,但是name、ag

Java 异常的处理方式与自定义异常

课程推荐:Java开发工程师--学习猿地精品课程 一、前言Java集合系列已经讲完了,接下来我们来讲异常与多线程。 Java基础语法;面向对象和封装;常用API第一部分;继承与多态;常用API第二部分

从Spring源码中学习如何查找自定义注解

课程推荐:https://my.oschina.net/u/3773302/blog/4702811 看几个基础的注解 @AliasFor@Retention(RetentionPolicy.RUNT