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