分组依据订单无效

时间:2015-04-15 12:26:16

标签: mysql database group-by

我的查询看起来像是给出了底部显示的结果。 问题是,数据没有正确显示。就像你可以看到我有ORDER BY id DESC的订单,它仍然通过id asc命令它。但我认为这是因为GROUP BY。如果我只是使用该子查询,那么它的排序正确,但我仍然需要按蜡烛分组。拜托,有人能告诉我这里缺少什么吗?

SELECT *
    FROM (SELECT * 
    FROM eurusd_min_all_t
    ORDER BY `id` DESC
    ) AS t1
GROUP BY candle 


id             time           open   high    low    close   candle
16955   2014-12-30 13:45:00 1.2158  1.2162  1.2154  1.2157  15m
31676   1998-01-05 23:00:00 1.0834  1.0985  1.0815  1.0834  1D
23951   2014-09-26 00:00:00 1.2750  1.2752  1.2748  1.2751  1H
37060   1998-01-30 23:00:00 1.0834  1.1203  1.0733  1.0783  1M
36158   1998-01-09 23:00:00 1.0834  1.0985  1.0778  1.0829  1W
27294   2012-06-15 03:00:00 1.2632  1.2636  1.2614  1.2615  4H
1       2015-01-20 18:25:00 1.1561  1.1565  1.1560  1.1564  5m

1 个答案:

答案 0 :(得分:0)

当你正确使用它时,

GROUP BY可以正常工作。如果您滥用该语言,您将无法获得预期的结果。首先阅读此documentation,并了解在聚合查询的select中添加额外列的含义。很抱歉,您希望自己的查询能够执行明确语言无法执行的操作。

如果您想要每个蜡烛的最新id,请使用典型的join / group by方法:

select t.*
from eurusd_min_all_t t join
     (select candle, max(id) as maxid
      from eurusd_min_all_t
      group by candle
     ) c
     on t.candle = c.candle and t.id = c.maxid;