1

有一个带有一个日期字段的表

问题是:有没有办法选择今天之后的 10 条记录和今天之前的 10 条记录 :)

当然,而不是进行两次查询

    SELECT xxxx FROM xxxx WHERE thedate >= 'date' ORDER BY thedate DESC LIMIT 10

 SELECT the same WHERE thedate < 'date' ORDER BY thedate ASC LIMIT 10

限制是首选。只是因为速度。

日期字段中的数据是不可预测的。可以有一个或两个具有相同日期的记录或没有日期记录。

4

3 回答 3

0
  SELECT xxxx FROM xxxx WHERE thedate >= 'date' ORDER BY thedate DESC LIMIT 10
union all
SELECT xxxx FROM xxxx WHERE thedate < 'date' ORDER BY thedate ASC LIMIT 10
于 2012-10-11T10:30:33.287 回答
0
SELECT xxxx FROM xxxx WHERE thedate > CURDATE() ORDER BY thedate DESC LIMIT 10
union
SELECTxxxx FROM xxxx WHERE thedate < CURDATE() ORDER BY thedate ASC LIMIT 10
于 2012-10-11T10:31:05.347 回答
0

您可以减去两个日期并将差异设为绝对值:

SELECT xxxx FROM xxxx ORDER BY ABS(UNIX_TIMESTAMP(thedate) - UNIX_TIMESTAMP('date'))

但是,使用UNION加入两个查询会容易得多:

SELECT ... UNION SELECT ...
于 2012-10-11T10:31:31.707 回答