有一个带有一个日期字段的表
问题是: 有没有办法在今天之后选择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是首选。仅仅因为速度。
日期字段中的数据不可预测。可以有一个或两个记录具有相同的日期或没有日期记录。
答案 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 ...