2013-04-24 72 views
0

表:GROUP BY PRIORITIZE NULL?

ID     in     out 
    1 2000-01-01 00:00:00 2000-01-01 12:00:00 
    1 2000-01-02 00:00:00     NULL 
    2 2000-01-01 00:00:00 2000-01-01 12:00:00 
    2 2000-01-02 00:00:00 2000-01-02 11:00:00 
    3 2000-01-01 00:00:00     NULL 

結果:

ID     in     out 
    1 2000-01-02 00:00:00     NULL 
    2 2000-01-02 00:00:00 2000-01-01 11:00:00 
    3 2000-01-01 00:00:00     NULL 

所以我想在的最近所有ID的並根據ID還命令他們。 我試過GROUP BY,但似乎得到了一個有價值的。

我目前所面對的是相似

SELECT * 
    FROM TABLE 
GROUP BY ID 
ORDER BY OUT IS NULL DESC, OUT DESC; 

回答

3

您需要選擇合適的值,以及通過執行命令:

select t.* 
from t join 
    (select t.id, max(t.in) as maxin 
     from t 
     group by t.id 
    ) tsum 
    on t.id = tsum.id and t.in = tsum.maxin 
order by id 
+0

嗨,有另一種方式無法使用子查詢?根據我的經驗,子查詢執行速度很慢。 – 2013-04-27 03:02:31

+0

@RjPo。 。 。在MySQL中,我不這麼認爲。如果你有'id,in'的索引,子查詢應該很快。 – 2013-04-27 15:17:26