我的查询看起来像是给出了底部显示的结果。
问题是,数据没有正确显示。就像你可以看到我有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
答案 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;