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