当前位置:  开发笔记 > 编程语言 > 正文

SQL,Order By - 如何为其他列提供更多权限?

如何解决《SQL,OrderBy-如何为其他列提供更多权限?》经验,为你挑选了1个好方法。

我有这个SQL语句:

SELECT * FROM converts 
WHERE email='myemail@googlemail.com' AND status!='1' 
ORDER BY date ASC, priority DESC

这只是按日期排序,但我想让我的专栏"优先"更具权威性.我怎样才能做到这一点?

它应该先按日期排序,但如果两个记录之间的时间是10分钟,那么我希望优先接管.我怎样才能在我的SQL语句中执行此操作,或者这必须在我的应用程序逻辑中?我希望我能在我的SQL语句中做到这一点.

谢谢大家的帮助



1> Paul Dixon..:

您可以将"日期"排序量化为10分钟的块,那么如何按楼层排序(unix_timestamp(date)/ 600),然后按优先级排序

SELECT * FROM converts 
WHERE email='myemail@googlemail.com' AND status!='1' 
ORDER BY floor(unix_timestamp(date)/600) ASC, priority DESC

虽然两个日期相隔不到10分钟,但跨越两个不同的10分钟"大块".也许这已经足够了,但我认为应用程序可以更好地完成您的要求.

(OP要求扩大解释....)

两次跨越十分钟的界限,如今天的9:09和9:11:

地板(UNIX_TIMESTAMP( '2009-03-16 09:09:00')/ 600)= 2061990

地板(UNIX_TIMESTAMP( '2009-03-16 09:11:00')/ 600)= 2061991

假设你在09:11比09:09有一个更高优先级的行 - 它仍会出现 09:09行之后,因为它落入了下一个10分钟的块,即使它只有2分钟不同.

所以这种方法是近似的,但并没有像最初所说的那样解决问题.

你说出问题的方式,一个高优先级的行可能会出现在之前记录的几个小时(或几天或几个月!)之前,只要有一系列不间断的低优先级行,间隔小于10分钟.

推荐阅读
虎仔球妈_459
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有