分组依据不能正确处理订单

Group by doesn't work correctly with order

我的查询看起来像这样,结果显示在底部。 问题是,数据没有正确显示。就像你看到的那样,我已经通过 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

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;