点击关注上方“数据管道”,

设为“置顶或星标”,第一时间送达干货

你有遇到过这样的场景吗?按指定的顺序输出结果,比如按“北京,天津,上海,重庆……”这样的顺序。今天给大家介绍几种方法来求解这样的问题,我们先看下示例表:这张表的数据是随机录进去的,下面我们希望按照我们指定的顺序输出为如下内容:注意:这里既没有按照人口的多少排序,也没有按照GDP的多少排序,更加没有按照城市的拼音首字母排序,完全是按照我们自己的意愿进行排序。方法一  ORDER BY CASE WHEN通过在ORDER BY的时候,我们对想要的输出顺序使用CASE WHEN,将文本转化为可排序的数字来进行间接排序,具体代码如下:

SELECT * FROM CitysORDER BY CASE WHEN City='北京' THEN 1           WHEN City='天津' THEN 2     WHEN City='上海' THEN 3     WHEN City='重庆' THEN 4     WHEN City='广州' THEN 5END

此方法针对比较简单的查询容易实现自定义排序,在比较复杂场景中使用起来有限制。方法二 UNION ALL使用UNION ALL的方法容易理解,但是代码会写的比较复杂,具体如下:

SELECT a.City,a.Population,a.GDP FROM(SELECT 1 Num,* FROM Citys WHERE City='北京'UNION ALLSELECT 2 Num,* FROM Citys WHERE City='天津'UNION ALLSELECT 3 Num,* FROM Citys WHERE City='上海'UNION ALLSELECT 4 Num,* FROM Citys WHERE City='重庆'UNION ALLSELECT 5 Num,* FROM Citys WHERE City='广州') aORDER BY a.Num

我们通过增加一列自定义的Num,给查询出来的每一行记录赋一个值,这个值是我们输出的顺序,再通过子查询对这个自定义的Num进行排序即可。时常用在比较复杂的查询语句中,且需要自定义排序的场景下。方法三 创建临时表相比上面两种方法,创建临时表的方法可以极大的减少代码量。我们可以先创建一个按照我们希望输出的顺序的临时表Temp,具体如下:当我们需要自定义排序输出时,可以直接关联该临时表,具体代码如下:

SELECT a.* FROM Citys aJOIN Temp b ON a.City=b.CityORDER BY b.Num

这种方法相对于上面两种方法只需要更新临时表中的顺序即可,可以适应各种不同的场景。

自定义sql_SQL自定义排序,想怎么排就怎么排相关推荐

  1. pandas dataframe中的列进行重新排序、倒排、正排、自定义排序详解及实践

    pandas dataframe中的列进行重新排序,pandas dataframe列重排.倒排.正排.自定义排序详解及实践 实施数据构建: import pandas as pd import nu ...

  2. hadoop之MapReduce自定义二次排序流程实例详解

    一.概述 MapReduce框架对处理结果的输出会根据key值进行默认的排序,这个默认排序可以满足一部分需求,但是也是十分有限的.在我们实际的需求当中,往往有要对reduce输出结果进行二次排序的需求 ...

  3. SQL Server中使用自定义指定顺序排序

    SQL Server中使用自定义指定顺序排序 原文:SQL Server中使用自定义指定顺序排序 比如需要对SQL表中的字段NAME进行如下的排序: 张三(Z) 李四(L) 王五(W) 赵六(Z) 如 ...

  4. Java基础-TreeSet与Java自定义类型的排序

    TreeSet与Java自定义类型的排序 演示TreeSet对String是可排序的 TreeSet无法对自定义类型进行排序 比较规则怎么写 自平衡二叉树结构 实现比较器接口 Collections工 ...

  5. MapReduce自定义二次排序流程

    每一条记录开始是进入到map函数进行处理,处理完了之后立马就入自定义分区函数中对其进行分区,当所有输入数据经过map函数和分区函数处理完之后,就调用自定义二次排序函数对其进行排序. MapReduce ...

  6. 重写Oracle的wm_concat函数,自定义分隔符、排序

    oracle中,wm_concat函数是一个聚合函数,和mysql中的group_concat函数类似,不过group_concat函数比较强大,可以定义分隔符和排序,当然所谓强大是相对的,这里假使我 ...

  7. mysql group by 之后取每个分组最新的一条(或者按照自定义的规则排序)

    mysql group by 之后取每个分组最新的一条(或者按照自定义的规则排序)_toString的博客-CSDN博客 select * from  mt_customer_bind_info_ax ...

  8. 关于winfrom控件自动排序(想怎么排就怎么排)

    关于winfrom控件自动排序(想怎么排就怎么排) 适用条件:在同一界面,有权限时,管理员登录能看到管理按钮,用户登录隐藏管理按钮,这样那个位置的控件就是空的 大概思路是手动设置控件的tabindex ...

  9. 从零开始simulink自定义代码生成----自定义目标系统配置(2)

    从零开始simulink自定义代码生成----自定义目标系统配置(2) 自定义目标系统配置文件之系统目标文件 RTW工具箱回调函数 RTW工具箱回调函数的作用 RTW工具箱回调函数参考代码 后续思考 ...

最新文章

  1. 【FFmpeg】降低转码延迟方法、打印信息详解、refcounted_frames详解
  2. 【TypeScript系列教程01】入门介绍
  3. PLSQL 循环游标 cursor loop fetch into
  4. Linux赋予目录或文件任何人都可以读、写、执行的操作
  5. Java---读取.properties配置文件空指针异常
  6. POJ 3268 Bookshelf 2 动态规划法题解
  7. Unity3D引用dll打包发布的问题及解决
  8. 在Java中将前导零添加到数字? [重复]
  9. 查找某个整数(数组)
  10. Acrobat Reader DC 2019 for Mac(pdf文件阅读器) 中文直装
  11. 2349 Arctic Network prim最小生成树 基础
  12. 备案号链接工信部_网站主页底部网站备案号的悬挂和链接的工作通知
  13. 现代软件工程 第一章 【概论】第6题——原旭莹
  14. nginx编译安装和yum安装那个更好?
  15. yii2 restful web服务[格式响应]
  16. Photoshop install
  17. 一个安全删除文件的shell命令
  18. java xlsm_使用apache poi写入xlsm(Excel 2007)
  19. Excise_Oop_abstract Interface
  20. csgo国服文件转国际服务器,CSGO国服怎样转国际服 1个打开项搞定

热门文章

  1. Linux上的gitlab日常操作
  2. 处理报错:java/lang/NoClassDefFoundError: java/lang/Object
  3. Django框架详细介绍---cookie、session、自定义分页
  4. centos 配置redis
  5. 菜单与工具条的同步 APP_STANDARD.SYNCHRONIZE
  6. 怎么卸载Apache_pn服务-PHPnow使用问题
  7. Java程序员面试宝典--this
  8. Pat乙级1084 外观数列
  9. 阿里工作流引擎_免费开源,一款快速开发模块化脚手架,含工作流引擎
  10. 怎么通过media foundation将图像数据写入虚拟摄像头_不知道怎么挑手机?性价比神机绝对适合你...