需要获取最大messageid的类型值

时间:2013-06-08 21:39:21

标签: mysql sql

我需要从表type获取messageid值的最大值mesaj_mesajlar。我也按type分组给你看。

我的查询:

SELECT
   mesaj_konular.id AS topicid,
   mesaj_mesajlar.id AS messageid,
   mesaj_mesajlar.tip AS type,
   uyeler.ad AS uname
FROM mesaj_konular 
INNER JOIN uyeler ON uyeler.id = mesaj_konular.uid 
INNER JOIN mesaj_mesajlar ON mesaj_mesajlar.konuid = mesaj_konular.id
GROUP BY 
   topicid,
   type

表:

topicid     messageid   type    uname
1           1           0       x
1           2           1       x
2           20          0       x
3           15          0       x
3           17          1       x

结果应为:

topicid     messageid   type    uname
1           2           1       x
2           20          0       x
3           17          1       x

1 个答案:

答案 0 :(得分:2)

执行此操作的一种方法是为每个topicid获取MAX()类型:

SELECT
   mesaj_konular.id AS topicid,
   mesaj_mesajlar.id AS messageid,
   mesaj_mesajlar.tip AS type,
   uyeler.ad AS uname
FROM mesaj_konular 
    INNER JOIN uyeler ON uyeler.id = mesaj_konular.uid 
    INNER JOIN mesaj_mesajlar ON mesaj_mesajlar.konuid = mesaj_konular.id
    INNER JOIN (
           SELECT konuid, MAX(tip) MaxTip
           FROM mesaj_mesajlar 
           GROUP BY konuid
    ) max_mesaj_mesajlar ON mesaj_mesajlar.konuid = max_mesaj_mesajlar.konuid 
          AND mesaj_mesajlar.tip = max_mesaj_mesajlar.MaxTip
GROUP BY 
   topicid