order by 多条件查询 case when
场景:在按照条件查询后,排序按照不同的条件排序,以及同一个条件 正序和倒序排序。可以考虑使用。
遇到的排序条件:按照直播的状态,根据条件排序。直播的状态包括:直播、置顶、预告、回放、过期预告。排序条件为:多直播按照 开始时间倒序排序,置顶按照置顶时间正序排序,预告按照离当前时间越近的倒序排序,回放按照开始时间倒序、过期预告按照离当前时间越近正序排序。
sql语句为:
SELECT
l.id,
l.title,
l.description,
l.picture,
l.is_dist_public,l.pre_start_time,
l.create_time,
(
CASE
WHEN l.live_status = 'NOTICE' THEN
date_format(
l.pre_start_time,
'%Y-%m-%d %H:%i:%s'
)
ELSE
date_format(
l.start_time,
'%Y-%m-%d %H:%i:%s'
)
END
) start_time,
r.top_time,
l.category,
l.live_status,
l.create_user,
l.zm_account_id,
l.source,
(
CASE
WHEN l.live_status = 'LIVING' THEN WHEN (
r.is_top =
AND l.live_status <> 'LIVING'
) THEN WHEN l.live_status = 'NOTICE'
AND pre_start_time >= now() THEN WHEN l.live_status = 'NOTICE'
AND pre_start_time < now() THEN WHEN l.live_status = 'PLAYBACK' THEN END
) AS sort,
r.is_top
FROM
live l
LEFT JOIN live_zm_account_rel r ON r.live_id = l.id
AND l.live_status != 'PRE_LIVE'
WHERE
=
AND r.is_enabled =
AND r.is_delete =
AND l.is_enabled =
AND l.is_delete =
AND r.zm_account_id = '9f7aa1cec50e4b368e69c4f5c14c3fcf'
ORDER BY
sort ASC, CASE WHEN sort = then l.start_time END DESC, CASE WHEN sort = then r.top_time END DESC, CASE WHEN sort = then l.pre_start_time END ASC, CASE WHEN sort = then l.start_time END DESC, CASE WHEN sort = then l.pre_start_time END DESC LIMIT
CASE when then 注意一点:后面的排序条件就是 你最终的排序条件。
order by 多条件查询 case when的更多相关文章
- 第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case
第20课-数据库开发及ado.net 可空值类型,资料管理器,多条件查询,Case SqlHelper using System; using System.Collections.Generic; ...
- Oracle学习总结_day03_day04_条件查询_排序_函数_子查询
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! day03_条件查询_排序_函数 清空回收站: PUR ...
- Hibernate条件查询
设计上可以灵活的根据 Criteria 的特点来方便地进行查询条件的组装.现在对 Hibernate的Criteria 的用法进行总结:Hibernate 设计了 CriteriaSpecificat ...
- Hibernate QBC 条件查询(Criteria Queries) and Demos
目录 创建一个Criteria 实例 限制结果集内容 结果集排序 关联 动态关联抓取 查询示例 投影Projections聚合aggregation和分组grouping 离线detached查询和子 ...
- Sql学习笔记(二)—— 条件查询
上篇简单介绍了一下sql的一些基础增删改查语句,而针对多种多样的查询语句则未详细说明,这一篇继续记录一下关于各种条件查询的知识. 1.按列名进行查询 语句: select stuName , stuA ...
- MySQL之单表查询 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER BY 八 限制查询的记录数:LIMIT 九 使用正则表达式查询
MySQL之单表查询 阅读目录 一 单表查询的语法 二 关键字的执行优先级(重点) 三 简单查询 四 WHERE约束 五 分组查询:GROUP BY 六 HAVING过滤 七 查询排序:ORDER B ...
- Rafy 中的 Linq 查询支持(根据聚合子条件查询聚合父)
为了提高开发者的易用性,Rafy 领域实体框架在很早开始就已经支持使用 Linq 语法来查询实体了.但是只支持了一些简单的.常用的条件查询,支持的力度很有限.特别是遇到对聚合对象的查询时,就不能再使用 ...
- [NHibernate]条件查询Criteria Query
目录 写在前面 文档与系列文章 条件查询 一个例子 总结 写在前面 上篇文章介绍了HQL查询,我个人觉得使用ORM框架就是为了让少些sql,提高开发效率,而再使用HQL就好像还是使用sql,就觉得有点 ...
- MySql学习(二) —— where / having / group by / order by / limit 简单查询
注:该MySql系列博客仅为个人学习笔记. 这篇博客主要记录sql的五种子句查询语法! 一个重要的概念:将字段当做变量看,无论是条件,还是函数,或者查出来的字段. select五种子句 where 条 ...
随机推荐
- python 并发协程
一 引子 本节的主题是基于单线程来实现并发,即只用一个主线程(很明显可利用的cpu只有一个)情况下实现并发,为此我们需要先回顾下并发的本质:切换+保存状态 cpu正在运行一个任务,会在两种情况下切走去 ...
- python 进程和线程(代码知识部分)
二.代码知识部分 一 multiprocessing模块介绍: python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情 ...
- 安装TD出现Unknown user name or bad password问题
在Server 2003 sp2上安装TD8.0 出现Unknown user name or bad password,是因为2003启用了DEP保护. 关闭系统的DEP保护就可以了. 方法如下 ...
- Ubuntu14.04下Cloudera安装搭建部署大数据集群(图文分五大步详解)(博主强烈推荐)(在线或离线)
第一步: Cloudera Manager安装之Cloudera Manager安装前准备(Ubuntu14.04)(一) 第二步: Cloudera Manager安装之时间服务器和时间客户端(Ub ...
- mysql中sql中的注释
学习mysql好久了,oracle也是,但是经常使用oracle,有一天突然想,oracle的sql语法中有注释,那么mysql中是不是也有注释,于是从网上搜了一下,原来mysql中的注释还真不少,下 ...
- Weblogic Maven
从weblogic 10.3.4开始支持maven deploy部署 步骤如下: 1.构建weblogic-maven-plugin jar 在D:\oracle\Middleware\wlser ...
- bootstrap中对dropdown使用hover代替click
bootstrap的下拉组件需要点击click才能展示下拉列表,这在使用导航的时候很不方便因此有一个扩展的组件来解决这个问题. 在VS的Nuget中查询bootstrap-hover-dropdown ...
- 请别再拿“String s = new String("xyz");创建了多少个String实例”来面试了吧---转
http://www.iteye.com/topic/774673 羞愧呀,不知道多少人干过,我也干过,面壁去! 这帖是用来回复高级语言虚拟机圈子里的一个问题,一道Java笔试题的. 本来因为见得太多 ...
- C# 中的隐式类型转换(运算时的隐式转换)和显示类型转换
区别: 隐式转换失败编译会报错. 显示转换有可能精度丢失. 根据项目的编译设置,显示转换溢出可能会报错,如果设置溢出且未使用checked检查,运行时如果发生溢出会产出未知的计算结果. 在数字运算时, ...
- LINQ操作List<T>
LINQ操作List<T>主要包括: 1.筛选 List<string> stcdList = stcdArray.ToList<string>() .FindAl ...