2016-11-14 78 views
1

我將向您展示我需要的一個示例。GROUP BY列並從其他列中獲得最佳列

這是我表了一些數據:

td_time | td_wave | td_userid_1 | td_userid_2 
15   | 1    | 100    | 200 
21   | 2    | 300    | 400 
9   | 1    | 500    | 600 
35   | 3    | 700    | 800 
20   | 3    | 900    | 1000 
88   | 4    | 1100    | 1200 

我需要從每一個td_wave最好td_time_seconds,並與「記錄」相關聯的最佳用戶。

這是我使用的查詢:

SELECT MIN(td_time_seconds), td_wave, td_userid_1, td_userid_2 
FROM test 
GROUP BY td_wave 
ORDER BY td_time_seconds ASC 

,並返回以下內容:

td_time | td_wave | td_userid_1 | td_userid_2 
9   | 1    | 100    | 200 
20   | 3    | 700    | 800 
21   | 2    | 300    | 400 
88   | 4    | 1100    | 1200 

的問題,該查詢返回的第一td_userid_1td_userid_2

td_userid_1td_userid_2td_wave = 1應該是500和600,當td_wave = 3應該是900和1000

+0

也請直接添加的所有信息進入問題。鏈接中斷,特別是SQLFiddle –

+0

@juergend完成! – KISKE

回答

1

可以在子句和子查詢使用元組使用

select td_time , td_wave , td_userid_1 , td_userid_2 
    from my_table 
    where (td_wave, td_time) in (
     select td_wave, min(td_time) 
     from my_table 
     group by td_wave 
    ) 
    ORDER BY td_time_seconds ASC