mySQL - 获取min,max和包含max的行的属性

时间:2011-11-10 04:35:32

标签: mysql grails

我需要从表中获取三个字段。该表包含字段 - id,timestamp,viewTime。我需要获取最大(时间戳)记录的最小值(时间戳),最大值(时间戳),视图时间。我宁愿只有一个查询。

SELECT MAX(timestamp), 
       MIN(timestamp), 
       viewTime 
  FROM session_progress 
 WHERE session_id = 2374;

此查询正确返回min,max,但返回最小viewTime。我真正想要的是具有最大时间戳的记录的viewTime。

前:

  timestamp             viewTime 
  ----------------------------------
  2011-11-05 10:21:00          1055
  2011-11-06 15:00:00          8900
  2011-11-07 18:20:00           750
  2011-11-07 19:23:00          4200

查询返回viewTime 750,但我需要最大的viewTime,即4200。

如果答案是用grails编写的,那就更好了(这与上面的SQL查询相同):

def sp_res = sp.get {
            projections {
                min("timestamp")
                max("timestamp")
                totalTime
            }
            and {
                eq("sessionId", unSession.id)
            }
        }

1 个答案:

答案 0 :(得分:1)

select b.maxT, b.minT, viewTime 
from session_progress,

(select max(timestamp) as maxT, min(timestamp) as minT
from session_progress 
where session_id=2374 ) b

where where session_id=2374 AND timestamp = b.maxT

就像这个想法一样,我还没有测试过它。请原谅任何错误。