gpt4 book ai didi

php - 按数据库中分组日期排序

转载 作者:行者123 更新时间:2023-11-29 14:43:01 25 4
gpt4 key购买 nike

您好,我遇到了与此问题类似的问题

Tricky "grouped" ordering in SQL

但似乎无法使其与日期一起使用

我的 table 有点

Car_ID   Car_Brand   Car_Model   Car_launch_date
1 Ford Fiesta 12-12-2011
2 Ford Mustang 09-04-2008
3 Ford Focus 10-02-2012
4 Honda Civic 11-05-2012
6 Honda Jazz 02-05-2011
7 Toyota Prius 11-10-2011

我希望我的结果按最接近现在的 future 日期排序,然后是最接近现在的过去日期(并按品牌分组)

我希望我的输出是这样的:

Car_ID   Car_Brand   Car_Model   Car_launch_date
7 Toyota Prius 11-10-2011
1 Ford Fiesta 12-12-2011
3 Ford Focus 10-02-2012
2 Ford Mustang 09-04-2008
4 Honda Civic 11-05-2012
6 Honda Jazz 02-05-2011

最佳答案

数据库中的日期是 DATE 对象还是字符串?因为如果您尝试将它们作为字符串排序,那是行不通的!

如果日期是DATE,请尝试:

SELECT * from my_table
ORDER BY Car_Brand DESC,
Car_launch_date < NOW(),
ABS(DATEDIFF(Car_launch_date, NOW()))

如果它们是字符串,请尝试:

SELECT * from my_table
ORDER BY Car_Brand DESC,
DATE(Car_launch_date) < NOW(),
ABS(DATEDIFF(DATE(Car_launch_date), NOW()))

当您在排序依据中指定多个列时,它将按第一列排序,如果第一列中的值相同,则按下一列排序。

此订单按 - 那么汽车品牌 - 日期是否是过去的日期。假的先排序。 (所以 future 优先),然后 - 日期的绝对差异(最小的数字在前)

注意:我放置了Car_Brand DESC(反向字母顺序),因为这就是上面的方式。

感谢 OP 发现您想要更复杂的订单。但我认为这种方式更好:)

关于php - 按数据库中分组日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7603998/

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