gpt4 book ai didi

mysql - ORDER BY 两列,但不按时间排序?

转载 作者:行者123 更新时间:2023-11-29 08:28:30 31 4
gpt4 key购买 nike

我之前发布过这个问题并找到了解决方案:ORDER BY with two columns in MySQL

这是关于对事件进行排序的。无论如何,优先级应该是 TOP-PREMIUM 和 PREMIUM 事件始终位于每个日期的顶部。

解决方案是其中一列是 ENUM 而不是 INT。这就是他排序错误的原因。

现在我按以下方式排序:ORDER BY e.date ASC, e.highlight DESC

现在我又遇到了另一个新问题,因为我所有的日期都设置为 00:00:00,即我在这里提出问题的时间,并认为一切都已解决。如果我将时间设置为 00:00 之后的某个小时,它将位于所有事件的顶部。即使在 PREMIUM 和 TOP-PREMIUM(亮点)事件中也是如此。

我可以以某种方式让MySQL忽略日期时间类型列date的时间吗?或者有没有其他方法可以让这个工作像我想要的那样?

问题还在于我无法首先按突出显示 DESC 进行排序,因为这样整个列表将不会按日期排序。

最佳答案

您可以使用 CAST() 函数或 DATE_FORMAT 函数仅获取日期部分,因此这应该可行:

ORDER BY CAST(e.date AS DATE), e.highlight DESC
ORDER BY DATE_FORMAT(e.date, '%Y-%m-%d'), e.highlight DESC

演示:SQL Fiddle

编辑:更新了 sql fiddle 演示以使用 2 列,您可以看到日期的时间部分不会影响排序顺序。

关于mysql - ORDER BY 两列,但不按时间排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17327248/

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