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 进行外部排序。
我有一个 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 进行外部排序。