Select x 小于某个日期的逆序记录数

Select x number of records in reverse order that are lesser than a date

我有一个 table,其中日期是其中一列。假设日期按升序排列。

我正在尝试按升序获取 7 条记录,这些记录早于特定给定日期的相反顺序。

例子

======================
ID           Date
=======================
1           2016-09-01
2           2016-09-03
3           2016-09-07
4           2016-09-09
5           2016-09-13
6           2016-09-15
7           2016-09-19
8           2016-09-22
9           2016-09-23

假设我想 select 3 条小于 2016-09-15 的记录按升序倒序排列。

我需要的输出是

************************
ID           Date
=======================
3           2016-09-07
4           2016-09-09
5           2016-09-13

如何在 MySQL 中实现此目的?

这应该有效:

select  * FROM table where date_field < 'some_date' order by date_field desc LIMIT 7

如果我没看错你的问题,应该是这样的:

SELECT *
FROM (
  SELECT *
  FROM Example
  WHERE
    my_date<'2016-09-15'
  ORDER BY
    my_date DESC
  LIMIT 3
) s
ORDER BY my_date ASC

请看fiddle here.

ORDER BY 和 LIMIT 一起使用时会有点棘手。

如果您需要早于某个日期的记录,并且将最新的记录排在最前面 @fthiella 建议的查询应该有效。

当您需要晚于某个日期的记录并且最早排序时同样适用。您只需按日期订购即可。

如果您需要早于某个日期的记录,那么您不能在单个查询中进行排序和限制。

你可能需要做一些类似的事情

select my_date from 
(
select my_date from 
    my_table where my_date < '08/24/2014' 
    order by my_date desc
    limit 7
 ) a 
 order by my_date 

根据您想要的顺序,是否按 desc 进行外部排序。