场景:在按照条件查询后,排序按照不同的条件排序,以及同一个条件 正序和倒序排序。可以考虑使用。

遇到的排序条件:按照直播的状态,根据条件排序。直播的状态包括:直播、置顶、预告、回放、过期预告。排序条件为:多直播按照 开始时间倒序排序,置顶按照置顶时间正序排序,预告按照离当前时间越近的倒序排序,回放按照开始时间倒序、过期预告按照离当前时间越近正序排序。

sql语句为:

  1. SELECT
  2. l.id,
  3. l.title,
  4. l.description,
  5. l.picture,
  6. l.is_dist_public,l.pre_start_time,
  7. l.create_time,
  8. (
  9. CASE
  10. WHEN l.live_status = 'NOTICE' THEN
  11. date_format(
  12. l.pre_start_time,
  13. '%Y-%m-%d %H:%i:%s'
  14. )
  15. ELSE
  16. date_format(
  17. l.start_time,
  18. '%Y-%m-%d %H:%i:%s'
  19. )
  20. END
  21. ) start_time,
  22. r.top_time,
  23. l.category,
  24. l.live_status,
  25. l.create_user,
  26. l.zm_account_id,
  27. l.source,
  28. (
  29. CASE
  30. WHEN l.live_status = 'LIVING' THEN
  31.  
  32. WHEN (
  33. r.is_top =
  34. AND l.live_status <> 'LIVING'
  35. ) THEN
  36.  
  37. WHEN l.live_status = 'NOTICE'
  38. AND pre_start_time >= now() THEN
  39.  
  40. WHEN l.live_status = 'NOTICE'
  41. AND pre_start_time < now() THEN
  42.  
  43. WHEN l.live_status = 'PLAYBACK' THEN
  44.  
  45. END
  46. ) AS sort,
  47. r.is_top
  48. FROM
  49. live l
  50. LEFT JOIN live_zm_account_rel r ON r.live_id = l.id
  51. AND l.live_status != 'PRE_LIVE'
  52. WHERE
  53. =
  54. AND r.is_enabled =
  55. AND r.is_delete =
  56. AND l.is_enabled =
  57. AND l.is_delete =
  58. AND r.zm_account_id = '9f7aa1cec50e4b368e69c4f5c14c3fcf'
  59. ORDER BY
  60. sort ASC, CASE WHEN sort = then l.start_time END DESC,
  61.  
  62. CASE WHEN sort = then r.top_time END DESC,
  63.  
  64. CASE WHEN sort = then l.pre_start_time END ASC,
  65.  
  66. CASE WHEN sort = then l.start_time END DESC,
  67.  
  68. CASE WHEN sort = then l.pre_start_time END DESC
  69.  
  70. LIMIT

CASE when  then  注意一点:后面的排序条件就是 你最终的排序条件。

order by 多条件查询 case when的更多相关文章

  1. 第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case

    第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case SqlHelper using System; using System.Collections.Generic; ...

  2. Oracle学习总结_day03_day04_条件查询_排序_函数_子查询

    本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...

  3. Hibernate条件查询

    设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 Hibernate的Criteria 的用法进行总结:Hibernate 设计了 CriteriaSpecificat ...

  4. Hibernate QBC 条件查询(Criteria Queries) and Demos

    目录 创建一个Criteria 实例 限制结果集内容 结果集排序 关联 动态关联抓取 查询示例 投影Projections聚合aggregation和分组grouping 离线detached查询和子 ...

  5. Sql学习笔记(二)—— 条件查询

    上篇简单介绍了一下sql的一些基础增删改查语句,而针对多种多样的查询语句则未详细说明,这一篇继续记录一下关于各种条件查询的知识. 1.按列名进行查询 语句: select stuName , stuA ...

  6. MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询

    MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...

  7. Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)

    为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...

  8. [NHibernate]条件查询Criteria Query

    目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...

  9. MySql学习(二) —— where / having / group by / order by / limit 简单查询

    注:该MySql系列博客仅为个人学习笔记. 这篇博客主要记录sql的五种子句查询语法! 一个重要的概念:将字段当做变量看,无论是条件,还是函数,或者查出来的字段. select五种子句 where 条 ...

随机推荐

  1. the unchecked warnings

    5.1.9. Unchecked Conversion Let G name a generic type declaration with n type parameters. There is a ...

  2. VMware Workstation中虚拟机的克隆

    1 克隆虚拟机 首先需要准备好一个安装好的系统,这里以linux为例进行演示. 在需要克隆的机器上右键选择管理==>克隆 选择需要克隆的虚拟机的状态,如果你想要的就是当前的状态,就直接选择虚拟机 ...

  3. python-queue队列通信

    #!/usr/bin/python from multiprocessing import Process,Queue import time l=[] q=Queue() def f(name): ...

  4. android4.0 4.1 4.2 4.3 4.4新特性

    http://blog.csdn.net/kaiyang45/article/details/7179349 4.0 http://digi.tech.qq.com/a/20120628/000827 ...

  5. 标准差(bias) 方差(variance)

    偏差(bias) 偏差度量了学习算法的期望预测与真实结果的偏离程序, 即 刻画了学习算法本身的拟合能力 . 方差(variance) 方差度量了同样大小的训练集的变动所导致的学习性能的变化, 即 刻画 ...

  6. MYSQL数据库的日志文件

    日志文件:用来记录MySQL实例对某种条件做出响应时写入的文件.如错误日志文件.二进制日志文件.慢查询日志文件.查询日志文件等. 错误日志 show variables like 'log_error ...

  7. jQuery全屏滚动插件fullPage.js中文帮助文档API

    jQuery全屏滚动插件fullPage.js中文帮助文档API   发现了一个fullPage.js插件,于是百度了一下,还就是这个插件的作用,其实有很多网站都做了全屏滚动的特效,效果也很好看,今天 ...

  8. C#中获取各种路径获取方法

    // 获取程序的基目录.System.AppDomain.CurrentDomain.BaseDirectory // 获取模块的完整路径,包含文件名System.Diagnostics.Proces ...

  9. 关于C#委托和Lambda表达式

    关于C#委托和Lambda表达式 1.C#委托和Lambda表达式结合定义方法非常方便 在定一次性方法有很好的应用 delegate void getProductNoReturn(int a); d ...

  10. MAVEN的基本配置,以及Hello Word

    MAVEN介绍 Maven是一个项目构建工具,参与项目创建.jar包管理.编译.运行.打包和发布等过程. Maven工具目的是以一种简便方式在多个项目中共享jar包. MAVEN安装和配置 Maven ...