GROUP BY列,并从其他列

时间:2016-11-14 20:47:01

标签: mysql

我将向您展示我需要的一个例子。

这是我的表格,其中包含一些数据:

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_time_seconds中最好的td_wave以及与该'记录相关联的最佳用户。

这是我使用的查询:

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_1应为500和600且td_userid_2应为900和1000时

td_wave = 1td_wave = 3

1 个答案:

答案 0 :(得分:1)

您可以使用in子句和子查询使用元组

   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