我有一个表格,其中日期是列之一。假设日期按升序排序。
我试图以相反的顺序以特定的给定日期之前的升序获取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
假设我想以相反的顺序选择按升序排列的3条记录,小于2016-09-15。
我需要的输出是
************************
ID Date
=======================
3 2016-09-07
4 2016-09-09
5 2016-09-13
我如何在MySQL中实现这一目标?
答案 0 :(得分:1)
如果我理解你的问题,那应该是这样的:
SELECT *
FROM (
SELECT *
FROM Example
WHERE
my_date<'2016-09-15'
ORDER BY
my_date DESC
LIMIT 3
) s
ORDER BY my_date ASC
请查看小提琴here。
答案 1 :(得分:0)
这应该有效:
select * FROM table where date_field < 'some_date' order by date_field desc LIMIT 7
答案 2 :(得分:0)
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的外部订单或不是基于您想要的订单。