2015-04-15 13 views
1

我的查詢看起來像這樣給出的結果顯示在底部。 問題是,數據未正確顯示。就像你可以看到我在那裏通過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

''GROUP'ing一個BY''SELECT *'通常是沒用的反正。就你而言,當然是。縮小要顯示的列。 –

回答

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; 
+0

Thx非常。這對我來說非常有用。 –