1

样品表:

id------user_id------grade_id------time_stamp

1---------100----------1001---------2013-08-29 15:07:38

2---------101----------1002---------2013-08-29 16:07:38

3---------100----------1001---------2013-08-29 17:07:38

4---------102----------1003---------2013-08-29 18:07:38

5---------103----------1004---------2013-08-29 19:07:38

6---------105----------1002---------2013-08-29 20:07:38

6---------100----------1002---------2013-08-29 21:07:38

我想选择其user_id = 100分组依据的行,grade_id仅当它time_stamp is least用于特定的grade_id.

所以,从上表来看,应该是:

第 1 行,因为它对于grade_id(1001)time_stamp的值最小

但不是第 2 行,因为我只想要 1 行用于特定的grade_id

也不是第 6 行,因为那个特定的 Grade_id has least value for user_id 105

我尝试了一些东西,这些东西太基础了,显然不值得发布。

谢谢你

4

2 回答 2

1

您可以尝试嵌套查询:

SELECT grade_id, COUNT(grade_id) FROM SAMPLE_TABLE ST WHERE time_stamp = (SELECT MIN(time_stamp) FROM SAMPLE_TABLE STT WHERE STT.grade_id = ST.grade_id) AND user_id = 100 GROUP BY grade_id;  

在这种情况下,嵌套查询将为您提供每个特定“grade_id”的最小时间戳,您可以在 WHERE 过滤器中使用它。

于 2013-09-02T11:12:15.587 回答
1
SELECT t.*
FROM tableX AS t
  JOIN
    ( SELECT grade_id, MIN(time_stamp) AS time_stamp
      FROM tableX
      GROUP BY grade_id
    ) AS g
      ON  g.grade_id = t.grade_id
      AND g.time_stamp = t.time_stamp
WHERE t.user_id = 100 ;
于 2013-09-02T11:23:58.850 回答