gpt4 book ai didi

php - Mysql不同的排序顺序

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

有一个简单的数据表,用于存储带有日期字段的新闻和事件(在此字段上手动输入)。只有一个简单的标志来告诉什么是新闻文章,什么是事件。

我需要做的是以日期降序排列新闻,以便首先显示最新新闻,但我希望事件按升序排列,以便首先显示最旧的新闻,所有数据应列为一个列表新闻/事件的混合,但按正确的日期顺序列出,因此记录将混合在一起

=====================================
Title | Date | Type
=====================================
News 1 | 2016/01/18 | N
News 2 | 2016/01/23 | N
Event 1 | 2016/01/25 | E
Event 2 | 2016/02/21 | E

需要输出如下数据:

=====================================
Title | Date | Type
=====================================
News 2 | 2016/01/23 | N
Event 2 | 2016/01/21 | E
Event 1 | 2016/01/25 | E
News 1 | 2016/01/18 | N

不是最好的例子,但希望足以给你一个想法。不确定这是否可能。

最佳答案

我不确定如何重新创建您的预期结果,因为“今天”可能会有所不同。我所能建议的是,您需要一个计算,也许基于 curdate() ,以便将来的日期在排序中受到“惩罚”。例如这个SQL Fiddle带有 curdate() 的 rune = March, 02 2016 00:00:00

MySQL 5.6 架构设置:

CREATE TABLE Table1
(`Title` varchar(7), `Date` datetime, `Type` varchar(1))
;

INSERT INTO Table1
(`Title`, `Date`, `Type`)
VALUES
('Event 1', '2016-01-25 00:00:00', 'E'),
('Event 2', '2016-02-21 00:00:00', 'E'),
('News 1', '2016-01-18 00:00:00', 'N'),
('News 2', '2016-01-23 00:00:00', 'N')
;

查询 1:

select
(case when `Date` > curdate() then `Date`-curdate() else curdate() - `Date` end) as scale
, `Date`
, `Title`
, `Type`
from table1
order by scale

<强> Results :

|           scale |                       Date |   Title | Type |
|-----------------|----------------------------|---------|------|
| -20160200839698 | February, 21 2016 00:00:00 | Event 2 | E |
| -20160104839698 | January, 25 2016 00:00:00 | Event 1 | E |
| -20160102839698 | January, 23 2016 00:00:00 | News 2 | N |
| -20160097839698 | January, 18 2016 00:00:00 | News 1 | N |

关于php - Mysql不同的排序顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35719114/

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