Mysql按时间戳排序(如果日期在两周内,则将事件保留在结果的顶部)

Mysql按时间戳排序(如果日期在两周内,则将事件保留在结果的顶部),mysql,Mysql,我正在编写一个从不同表(用户活动流)提取数据的查询 下面的“events.eventdate_us”是YYYY-MM-DD中事件的实际日期-时间戳是事件发布的时间 如果事件日期在两周内,如何按时间戳将查询写入order,但将事件推到顶部 SELECT events.user_id, events.eventdate_us, events.start_time, events.event_title,

我正在编写一个从不同表(用户活动流)提取数据的查询

下面的“events.eventdate_us”是YYYY-MM-DD中事件的实际日期-时间戳是事件发布的时间

如果事件日期在两周内,如何按时间戳将查询写入order,但将事件推到顶部

    SELECT events.user_id,
           events.eventdate_us,
           events.start_time,
           events.event_title,
           events.description,
           events.venue,
           events.add1,
           events.city,
           events.country,
           events.website,
           'NULL' AS update_msg,
           'NULL' AS buying_selling,
           'NULL' AS stock_type,
           events.timestamp AS timestamp,
                               'events' AS source,
                               users.contact_person,
                               users.company,
                               users.pic_small,
                               users.pic_large
    FROM events
    LEFT JOIN users ON users.user_id = events.user_id
    ORDER BY timestamp DESC LIMIT 30
我应该补充一点,这是几个联合调用的一部分,以获取查询中所需的一切

下面是我试图实现的目标(顶部两周内的活动)-我可以通过 订单按eventdate_us='2014-07-31'描述,时间戳描述限制30,但我必须指定确切日期

我想做的是在两周内获得所有事件,比如ORDER BY eventdate_us 但这不起作用,会产生


我在找更像这样的东西

ORDER BY eventdate_us = (eventdate_us >= (DATE_ADD(NOW(), INTERVAL 14 DAY))) ASC, 
timestamp DESC LIMIT 30");

尽管这并不完全正确,因为它仍然选择了一个不在两周内的日期(即未来两周以外的日期)。

下面是我所寻找的,它将任何事件固定到结果顶部,其中事件日期在接下来的两周内

ORDER BY eventdate_us BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL 14 DAY) DESC, 
timestamp DESC LIMIT 30

我想按时间戳desc排序,但如果事件在两周内发生,则在结果的顶部保留一个事件。让我尝试澄清一下。您希望按时间戳按降序对事件进行排序,但一周内至少发生两次的事件必须放在顶部。这是正确的吗?不完全正确-如果事件日期在两周内,我希望它保持可见并保持在结果的顶部(优先于最新的时间戳),我已经做到了-“events.eventdate_us”是YYYY-MM-DD中事件的实际日期-时间戳是它发布的时间。如果事件日期在两周内,我如何按时间戳顺序编写查询,但如何将事件推到顶部按时间戳顺序我试图把一个事件推到我的结果的顶端,如下面所示-按事件日期的顺序_us='2014-07-31'描述,时间戳描述限制30,但不是确切的日期,我想在两周内把所有的东西都拿到顶部,那么,在eventdate_us