复杂的orderby sql排序(按判断不同时间进行排序)
2023-09-27 14:27:29 时间
我现在的数据是这样的,过期时间等于0的表示无限过期时间数据,过期时间小于当前时间为已过期数据
现在有个需求,将过期的数据排最底,等于0和未过期的数据按最新的排在最前面
代码实现
$where ='';
//获取当前时间戳
$nowtime = time();
$flist = DB::fetch_all(
"select *
from pre_common_task
WHERE $where
ORDER BY endtime!=0 AND endtime<$nowtime ASC, id DESC
");
解释:
endtime!=0 AND endtime<$nowtime ASC:
表示过期时间不等于0且小于当前时间的正序排序,及排到最底
id DESC:
表示其他按id倒序排序,由大到小,及最新的数据排最前
如果你觉得比较乱,也可以用下面的办法达到相同的效果
select *,(endtime!=0 AND endtime<$nowtime) as t
from pre_common_task
WHERE $where
ORDER BY t ASC,taskid DESC;
效果
ps:如果需求有变化,可以模拟这种方法适当变通
相关文章
- sql多表更新使用别名(小技巧)
- SQL Server此数据库没有有效所有者
- SQL Server: Difference between PARTITION BY and GROUP BY
- 第117章 SQL函数 REPLICATE
- SQL server 统计数据库
- SQL数据库连接工具类
- 《Oracle SQL疑难解析》——1.3 将结果排序
- 《SQL初学者指南(第2版)》——2.7 小结
- sql server 小技巧(7) 导出完整sql server 数据库成一个sql文件,包含表结构及数据
- sql server 小技巧(4) Sql server 排序时让空值排在最后
- 《SQL与关系数据库理论——如何编写健壮的SQL代码》》一1.4 原始模型回顾
- SQL SERVER怎样将某个服务器上面的数据自动备份到另一台服务器上面(异地备份)
- sql server中同时执行select和update语句死锁问题
- SQL常用代码段
- 两天完成牛客网sql必知必会50题(附链接)
- SQL数据分组后取最大值或者取前几个值(依照某一列排序)
- sql server游标的特性(套娃特性,排序就不套娃特性)
- (3.6)常用知识-sql server字符编码与排序规则
- 【SQL刷题】Day8----SQL排序检索数据专项练习
- SQL Server 数据库调整表中列的顺序操作
- sql连续排序DENSE_RANK,算出得分(并列第一)
- SQL Server 分组排序后取第N条数据(或前N条)
- SQL Server 分组排序后取第N条数据(或前N条)
- SQL 语句快速入门(数据库和表的创建,表的操作,表中数据查询,分组、聚合、排序 DOS命令窗口实现)
- SQL 面试题(一)
- SQL Server 无法修改表,超时时间已到--解决方法