如何在mysql查询中获取GROUP BY的最新索引?

时间:2013-07-24 00:44:56

标签: mysql group-by record

我对算法和获取Group by的最新索引的方法感到困惑。 我有这样的查询。

SELECT hasil_kmbg AS RESULT,
   EXTRACT(MONTH
           FROM tgl_check) AS MONTH,
   EXTRACT(YEAR
           FROM tgl_check) AS YEAR
FROM perkembangan
WHERE no_pasien=11
GROUP BY MONTH,
         id_kmbg DESC

这是查询的结果

|Result|Month|Year|
-------------------
|3     |1    |2013|
|1     |1    |2013|
|5     |1    |2013|
|1     |2    |2013|
|1     |3    |2013|
and so on

问题是,我如何在第1个月获得结果为3的结果?我不想在第1个月中显示其他结果,除了3(最新的,我通过desc订购)。

2 个答案:

答案 0 :(得分:0)

由于您已在id_kmbg子句中包含group by,因此每月会获得多行。我想你想要max()函数:

select max(hasil_kmbg) as Result, EXTRACT(MONTH FROM tgl_check) as Month,
       EXTRACT(YEAR FROM tgl_check) as Year
from perkembangan
where no_pasien=11
group by Month, Year;

答案 1 :(得分:0)

我认为你正在寻找这个:

SELECT hasil_kmbg AS RESULT,
       EXTRACT(MONTH
               FROM tgl_check) AS MONTH,
       EXTRACT(YEAR
               FROM tgl_check) AS YEAR
FROM perkembangan
WHERE no_pasien=11
ORDER BY id_kmbg DESC
LIMIT 1

我的预感是你在这里不需要GROUP BY(因为你是通过ID DESC订购的)。

如果您需要分组,则可能需要重新选择hasil_kmbg。