相关文章推荐
逃课的橙子  ·  SQL Server ...·  3 周前    · 
逃课的橙子  ·  Python:将PDF转成Excel ·  7 月前    · 
逃课的橙子  ·  网络问题排查 - 我的博客·  11 月前    · 
逃课的橙子  ·  Vuejs CI/CD Job ...·  1 年前    · 
逃课的橙子  ·  为Adobe Experience ...·  1 年前    · 
英俊的键盘  ·  客户端网络配置 - SQL Server ...·  28 分钟前    · 
有胆有识的小狗  ·  Swift withUnsafeBytes ·  52 分钟前    · 
刚失恋的啤酒  ·  swift5弃用方法'withUnsafeB ...·  53 分钟前    · 
活泼的卤蛋  ·  Get-Process ...·  1小时前    · 
另类的麦片  ·  java.lang.IllegalArgum ...·  1小时前    · 
魁梧的卤蛋  ·  linnux 3 - CanntBelieve ·  2 小时前    · 
星星上的斑马  ·  flex Vector - ...·  2 小时前    · 
飘逸的水龙头  ·  Validations for Enum ...·  2 小时前    · 
谈吐大方的香菜  ·  jQuery css() 方法 | ·  2 小时前    · 
SELECT * FROM SortTest

在这里插入图片描述
需求是:将最近当前日期的未来时间放到最前面,过去的日期放到后面,效果如下:(数据倒置)
在这里插入图片描述
看这个需求简单想法就是用union联合查询,在这里问题就来了,union不允许order by 排序。
在这里插入图片描述
然后想到嵌套联合查询,依旧不可以,在子查询中, 如果不存在TOP语句则ORDER BY子句无效:
在这里插入图片描述
加上TOP语句top 100 percent ,查询全部,这时数据乱序了:
在这里插入图片描述
然后找了下原因,使用100%排序就会失效,看这篇文章:点我哦
那就查top 99.999999 percent 就成功了,但是要考虑数据是否会有遗漏。

select * from( SELECT top 99.999999 percent  * FROM  SortTest where CreatedTime<GETDATE()  order by CreatedTime asc ) b
Union ALL 
select  * from( SELECT top 99.999999 percent  * FROM  SortTest  where CreatedTime>=GETDATE() order by CreatedTime desc) a

后面在想能不能不用联合查询,直接对时间字段两次排序行不行,然后就出现了下面的语句:

  select * from (
	SELECT top 99.999999 percent *
	FROM  SortTest	  
	order by CreatedTime desc
  order by case when CreatedTime>GETDATE() then 1 else 0 end

先对数据倒叙排序,在对未来时间进行升序。

上面的内容在sql语句已经实现,但是如果是使用spark的编程排序接口, 如果连接两个sort的话,他就以最后一个为准了。 为了实现这个功能,就在sort指定多个列名(”age“,”name”) 如果还要控制顺序的话,就要再添加一个参数ascending,是一个列表。个数一... SELECT id,tid,`order`, FROM_UNIXTIME(yestime) FROM tfen WHERE tid IN(7512, 7514) ORDER BY `order` DESC ; 结果如下: 排序sql语句: SELECT id,tid,`order`, FROM_UNIXTIME(yestime) FROM tfen WHERE tid IN(7512, 7514) GROUP BY ...
你可以使用ORDER BY子句和时间字段来按照时间排序。例如,如果你的表有一个名为"timestamp"的时间字段,你可以使用以下查询来按照时间升序排序: SELECT * FROM your_table_name ORDER BY timestamp ASC; 如果你想按照时间降序排序,可以将"ASC"替换为"DESC": SELECT * FROM your_table_name ORDER BY timestamp DESC;
 
推荐文章