MYSQL SELECT与LIMIT相矛盾

时间:2012-10-11 10:27:56

标签: mysql datetime limit

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

问题是: 有没有办法在今天之后选择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

LIMIT是首选。仅仅因为速度。

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

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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

答案 2 :(得分:0)

您可以减去两个日期并使差异绝对:

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

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

SELECT ... UNION SELECT ...