论坛:排序 >>case..when..then ..end的妙用
a.主题列表按 最后更新时间 进行排序

数据库SQL语句中没有if..else的判断语句,但是oracle中有decode()函数可以实现这种判断语句,但是还可以用case..when..then ..else..end,功能更加强大
但此次运用特殊字段lastUpdateTime解决,提高了效率,只用查询一张表:

b.主题列表排序,让所有置顶帖排在最上面,然后,让置顶帖,精华帖,普通帖按最后更新时间进行排序。
public List<Topic> getByForum(Forum forum) {
//TODO 排序,让所有置顶帖排最上面,然后,让置顶帖,精华帖,普通帖并按最后更新时间排序。
//FIXME 怎么排序
return getSession().createQuery("FROM Topic t WHERE t.forum=? ORDER BY (CASE t.type WHEN 2 THEN 2 ELSE 0 END) DESC,"
+" t.lastUpdateTime DESC")
.setParameter(0,forum).list();
}
c.case 对象 when 条件1 then 结果1 .. else 其他结果 end 可以用在select/where/order by 后面
例如:
例如:

论坛:排序 >>case..when..then ..end的妙用的更多相关文章
- sql排序 去除默认升降序排序case方法////遍历数据库所有表及统计表数据总数
case排序法: end 还有EXEC法 可以网上查 SQLServer遍历数据库所有表及统计表数据总数: DECLARE @TableName varchar(); CREATE TABLE #Ge ...
- Oracle查询优化--排序
--普通排序 SELECT * FROM emp ORDER BY sal DESC; --使用列序排序 DESC; --组合排序 DESC; --translate函数,参数分别用A.B.C表示 S ...
- MySQL case when 使用
case when 自定义排序时的使用 根据 case when 新的 sort字段排序 case when t2.status = 4 and t2.expire_time>UNIX_TIME ...
- sql case when then else end sql_variant
/****************************************************************************** ** Name: usp_cfg_Get ...
- java面试题总汇
coreJava部分 7 1.面向对象的特征有哪些方面? 7 2.作用域public,private,protected,以及不写时的区别? 7 3.String 是最基本的数据类型吗? 7 4.fl ...
- SQL存储过程分页(通用的拼接SQL语句思路实现)
多表通用的SQL存储过程分页 案例一: USE [Community] GO /****** Object: StoredProcedure [dbo].[Common_PageList] Scrip ...
- Devexpress 汉化
DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件.对于较老的版本(例如之前项目中遇到的dev9),对于汉化(应该说本地化Localization)支持 ...
- Java项目——模拟电话薄联系人增删改查
该项目模拟了电话本记录联系人的业务功能,用来练习对数据库的增删改查等操作. 菜单类:Menu -- 用来封装主菜单和个选项的子菜单 Person类: Person--联系人的实体类 TelNoteRe ...
- 电话薄设计--java
package com.hanqi.telbook; import java.util.Scanner; public class Menu { //主菜单 public void mainMenu( ...
随机推荐
- mysql5.7.10开启慢查询
MySql提供慢SQL日志的功能,能够记录下响应时间超过一定阈值的SQL查询,以便于我们定位糟糕的查询语句. 首先,查询当前mysql数据库是否开启了慢查询日志功能: show VARIABLES l ...
- JMeter学习(三十六)发送HTTPS请求(转载)
转载自 http://www.cnblogs.com/yangxia-test Jmeter一般来说是压力测试的利器,最近想尝试jmeter和BeanShell进行接口测试.由于在云阅读接口测试的过程 ...
- Appium 1.6安装步骤
原来用的Appium1.5.3GUI版本,那为什么升级呢? 为了兼容最新版本的iOS10和Android7 Xcode8升级后,将不支持使用UIAutomation,而是改为使用XCUITest了,并 ...
- Django model 中的 class Meta 详解
Django model 中的 class Meta 详解 通过一个内嵌类 "class Meta" 给你的 model 定义元数据, 类似下面这样: class Foo(mode ...
- 并发编程(IO多路复用)
阅读目录 一 IO模型介绍 二 阻塞IO(blocking IO) 三 非阻塞IO(non-blocking IO) 四 多路复用IO(IO multiplexing) 五 异步IO(Asynchro ...
- 全国高校绿色计算大赛 预赛第一阶段(C++)第1关:将字符串反转
挑战任务 将输入的字符串str进行反转. 编程要求 补全右侧vector<char> inversion(string str)函数实现字符串的反转并返回反转之后的字符串,其中函数参数st ...
- h5外部浏览器直接调起app
1. 安卓端: 其中,scheme必须是小写的,同时要求H5必须是“<a href="appback://">启动应用程序</a> ” 2. h5端完整示例 ...
- Mac 上fopen总返回NULL
全局,相对路径都不行, 在沙盒中获取也不行 //在沙盒中获取Documents的完整路径 NSString * path = [NSSearchPathForDirectoriesInDomains( ...
- PyCharm 2019 最新激活方式总结(最新最全最有效!!!
host 注册码 http://idea.lanyus.com/ https://www.cnblogs.com/yjd_hycf_space/p/9110550.html ...
- JSP使用sessionScope获取session值
场景:有些实体对象可以放到HttpSession对象中,保正在一个会话期间可以随时获取这个对象的属性,例如可以将登录用户的信息写入session,以保证页面随时可以获取并显示这个用户的状态信息.下面以 ...