MySQL ORDER BY两次(由同一领域)

时间:2014-08-30 22:01:06

标签: mysql

我有一系列日期事件,如下:

  • 事件1,1/1/2014
  • 活动2,1 / 2/2014
  • 活动3,1/3/2014

按照时间顺序说我想要最近的两个事件。如果我跑了:

SELECT * FROM 'table_name' ORDER BY 'Date' ASC LIMIT 2

我会得到以下结果:

  • 事件1,1/1/2014
  • 活动2,1 / 2/2014

但这是不正确的,因为事件3是最近的事件。所以我因此将ASC更改为DESC:

SELECT * FROM 'table_name' ORDER BY 'Date' DESC LIMIT 2

我得到以下结果:

  • 活动3,1/3/2014
  • 活动2,1 / 2/2014

这是正确的结果集,但它们是倒退的。我希望最近的事件能够持续...但我不能再次使用ORDER BY 'Date'。有没有办法限制我的结果(通过LIMITORDER BY,然后对剩余的结果使用第二个ORDER BY

非常感谢任何帮助!

3 个答案:

答案 0 :(得分:3)

更快的方法就是做一个选择。使用UNION语法再次订购。尝试一下!

(SELECT * 
 FROM events 
 ORDER BY date DESC 
 LIMIT 2
)ORDER BY date ASC;

DEMO

答案 1 :(得分:2)

SELECT * 
FROM (SELECT * FROM events ORDER BY date DESC LIMIT 2) AS table_alias 
ORDER BY date ASC

您需要为子查询提供表别名

干杯

答案 2 :(得分:0)

实际上,你可以

SELECT * FROM (
SELECT * FROM 'table_name' ORDER BY 'Date' DESC LIMIT 2
)
ORDER BY 'Date' ASC