gpt4 book ai didi

mysql - SQL, Order By - 如何给其他列更多的权限?

转载 作者:可可西里 更新时间:2023-11-01 08:01:48 24 4
gpt4 key购买 nike

我有这个 SQL 语句:

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

这只是按日期排序,但我想赋予我的列“优先级”更多权限。我怎样才能做到这一点?

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

谢谢大家的帮助

最佳答案

您可以将“日期”排序量化为 10 分钟的 block ,那么按 floor(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 分钟“ block ”。也许这就足够了,但我认为完全按照您的要求由应用程序更好地完成。

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

以跨越 10 分钟边界的两次为例,例如今天的 9:09 和 9:11:

  • floor(unix_timestamp('2009-03-16 09:09:00')/600) = 2061990
  • floor(unix_timestamp('2009-03-16 09:11:00')/600) = 2061991

假设 09:11 的优先级高于 09:09 - 它仍将出现在 09:09 行之后,因为它落入了下一个 10 分钟的 block ,即使它是仅相差 2 分钟。

所以这种方法是一种近似,但并没有解决最初陈述的问题。

按照您陈述问题的方式,高优先级行可能会出现在几个小时(或几天,或几个月!)之前记录的行之前,只要有一系列连续的低优先级行且间隔小于 10 分钟即可。

关于mysql - SQL, Order By - 如何给其他列更多的权限?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/647908/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com